2016-06-13 5 views
0

私はAssassinNodeDataという名前のクラスについて簡単な質問があります。私は単純なequals()メソッドを記述しようとしています。 ObjectパラメータがAssassinNodeDataオブジェクトで、このオブジェクトのプレーヤフィールドがパラメータのプレーヤフィールドと大文字と小文字を区別しない一致であるかどうかを確認できます。オブジェクトとパラメータのテスト

これは私がこれまで持っているものを少しです:

public boolean equals(Object data) { 
    AssassinNodeData other = (AssassinNodeData) data; 
    if (!(data instanceof AssassinNodeData) && !other.getPlayer().equalsIgnoreCase(player)) 
     if (!(data instanceof String) && !other.getPlayer().equalsIgnoreCase(player)) 
      return false; 
    return true; 
} 

任意の提案をいただければ幸いです!

+0

あなたの説明は 'Object'パラメータについて語っていますが、これまでのところあなたのメソッドは' String'パラメータしか持っていません... –

+0

@JonSkeet Aah私は見ています - 私はオブジェクトに渡しているパラメータを変更する必要がありますStringの代わりに?質問の説明のコードを更新しました。 – Ani

+0

さて、コードを更新して、今ではあなたが記述したものではない、 'AssassinNodeData'の型になっています... –

答えて

0

equals方法はstaticすべきではない、それを宣言する正しい方法は次のとおりです。

public boolean equals(Object obj) { 

そして、ここではあなたのコード、たとえば必要があります:あなたは私たちに最初のチェックを見ることができるように

if (!(obj instanceof AssassinNodeData)) { 
     return false; 
    } 
    AssassinNodeData other = (AssassinNodeData) obj; 
    return other.getPlayer.equals(player); 

をオブジェクトが正しいクラスであれば、後でそれを期待するクラスにキャストします。 その後、他のフィールドからフィールドを取得し、現在のオブジェクトフィールドと比較します。

+0

ありがとうございます!それがうまくいくかどうかを試してみましょう... – Ani

+0

私は全体のクラスを更新しました。それは来たものです - コメント、提案? – Ani

関連する問題