1
 public int compareTo(DynamicField other) {
     return other.wildcard.length() - wildcard.length();
 }

 boolean equals(DynamicField other) { 
    return compareTo(other) == 0; 
 } 

私はこの問題に直面しています。これを解決する方法を教えてください。私のメソッドの実装は上記のとおりです

4

1 に答える 1

3

equalsメソッドが正しく定義されていません。次のようにする必要があります。

@Override
public boolean equals(Object obj)
{
  ...
}

このようなものが動作するはずです:

@Override
public boolean equals(Object obj)
{
  if (!(obj instanceof DynamicField))
     return false;
  return compareTo((DynamicField)obj) == 0;
}

別のクラスのメソッドをオーバーライドしたり、インターフェイス メソッドを実装したりする場合は、常に@Override. 間違って定義した場合は、次のように表示されます。

method does not override or implement a method from a supertype
于 2013-10-21T14:21:02.357 に答える