[英]Java: Comparing a class with another within that class using a my own .equals
我正在制作一個方法.equals
替換使用的equals
方法。 它接受一個對象。 我希望它檢查該對象是否等於運行.equals
類的類。
我知道我想比較我對該對象的所有私有方法。
有沒有辦法這樣做而不需要另一個私有類來從對象獲取私有變量? 我如何做這個比較平等而不是身份? 我堅持這個。 我必須使用==
進行比較嗎?
也在網上看我看到其他人使用遞歸。 如果這是我必須這樣做的方式,你可以向我展示和解釋嗎?
所以我有一個例子
public boolean equals(Object o)
{
這是一個我們稱之為bobtheBuilder的類(我頭腦中要彈出的第一件事)我想檢查對象o是否等於類。 bobTheBuilder有私有對象數組和私有int。 我假設我想檢查這個類的數組和int是否等於對象的數組和int。 首先我知道我需要檢查它是否等於null
private _arrayObject[];
private _integerBob;
public boolean equals(Object o)
{
boolean result = true;
if (o == null)
result = false
bobTheBuilder compared = (bobTheBuilder) o;
if(compared.getArray != _arrayObject[] || compared.getInt != _integerBob)
result == false
return result
}
我知道平等的檢查不是身份,所以我認為這是錯誤的。 我該怎么做
因此,在類Z中有一個私有數組X和一個int Y.
現在,為了檢查平等而不是縮進,
public void setArrayX(Object [] arr),public Object [] getArrayX()
2.現在,eqauls方法看起來像,
boolean equals(Object o) {
if(Arrays.equals(this.getArrayX(),o.getArrayX()) && this.getIntY() == o.getIntY())
return true;
return false;
}
改編自Joshua Bloch的Effective Java第2版中的示例:
public boolean equals(Object o) {
if (o == this) {
return true;
}
if (!(o instanceof BobTheBuilder)) {
return false:
}
BobTheBuilder bob = (BobTheBuilder) o; //guaranteed to succeed
return Arrays.equals(bob._arrayObject, _arrayObject)
&& bob._integerBob == _integerBob;
}
不要忘記重寫hashCode
。
書中的文字是指合同列明的equals
的方法, Object
是在這里
我認為檢查課程的最佳方法是通過
someObject.getClass().isInstance(anotherObject)
命令。
這也適用於繼承。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.