我只是想了解等於方法。我推翻在一個自定義的類此方法只是爲了看的行爲,而是得到了內存不足的錯誤,由於無限loop.I知道重寫合同equals方法 1)自反性 2)對稱性 3)傳遞 4)一致 5)對於任何空引用,它必須由於等於方法實現而導致無限循環的OutOfMemoryError
public class Reflexivity
{
public static void main(String[] args) {
Reflexivity reflexivity = new Reflexivity();
Reflexivity reflexivity1 = new Reflexivity();
System.out.println(reflexivity.equals(reflexivity1));
}
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (!(obj instanceof Reflexivity)) {
return false;
}
// TODO Auto-generated method stub
return this.equals(obj);
}
}
你的'this.equals(obj)'導致無限循環 – Oswald
我只想指出你應該得到一個'StackOverflowError'而不是'OutOfMemoryError'。如果創建對象,您將只能獲得OOME。沒有任何東西是由你的「equals」方法創建的。 –