1. 程式人生 > >24、覆蓋equals時請遵守通用約定

24、覆蓋equals時請遵守通用約定

一致性 覆蓋 調用 null 情況 多次調用 als 沒有 信息

覆蓋equals方法看似很簡單,但是有許多覆蓋方式會導致錯誤,並且後果非常嚴重。最容易的避免這類問題的方法就是不覆蓋equals方法,這種情況下,每個實例都與它自身相等。

如果你必須覆蓋equals方法,那麽請遵循:

1、自反性。對於任何非null的引用值x,x.equals(x)必須返回true;

2、對稱性。對於任何非null的引用值x和y,當且進黨y.equalts(x)返回true時,x.equals(y)必須返回true;

3、傳遞性。對於任何非null的引用值x和y和z,如果x.equals(y)為true,並且y.equals(z)為true,那麽x.equals(z)也必須返回true;

4、一致性。對於任何非null的引用值x和y,只要equals的比較操作在對象中所用的信息沒有被修改,多次調用x.equals(y)就會一致地返回true,或者一致地返回false。

24、覆蓋equals時請遵守通用約定