私はそのリストにリストを持っています。オブジェクトを作成しました。 メソッドを使って、オブジェクトがすでに存在するかどうかをチェックしたいと思います。そのために、私はequals()
メソッドをオーバーライドします。すべてはこれまで完璧です。しかし、私がString
とint
について同じことをしようとすると、equals()
オーバーライドは機能しません。なぜそれはこのようなものですか?私はちょうど参照のためのいくつかのサンプルコードを投稿した。StringとIntの等しいオーバーライド
public class Test
{
private int x;
public Test(int n)
{
x = n;
}
public boolean equals(Object o)
{
return false;
}
public static void main(String[] args)
{
List<Test> list = new ArrayList<Test>();
list.add(new Test(3));
System.out.println("Test Contains Object : " + list.contains(new Test(3))); // Prints always false (Equals override)
List<String> list1 = new ArrayList<String>();
list1.add("Testing");
String a = "Testing";
System.out.println("List1 Contains String : " + list1.contains(a)); // Prints true (Equals override not working)
}
}
です。 Testオブジェクトに対してequalsを明示的にオーバーライドしています。 –
私はその質問を理解していません。あなたには文字列のリストがあり、リストには追加した文字列が含まれ、 'contains'にはそれほど多くの文字列が含まれます。 'String'に対しても同じことをすることはできず、Stringを拡張しようとするとコンパイルされません。 –