2 つの異なるクラスの 2 つのオブジェクトを比較することは可能ですか。
クラスAのすべてのオブジェクトを追加するベクトルがあるとしましょう。文字列をベクトルの要素と比較したいと思います。
例:
if(string.equals(vector.get(i)))
これは可能ですか?
はい、電話できますequals()
。ただし、引数が別のクラス (おそらくサブクラス以外) のものである場合、 の妥当な実装SomeClass.equals()
は戻ります。false
string
が のインスタンスである場合、java.lang.String
この動作は明確に保証されています。
結果は、引数がこのオブジェクトと同じ文字シーケンスを表すオブジェクトではなく、そのオブジェクトである
true
場合にのみ得られます。null
String
あなたのオブジェクトは少なくともオブジェクトクラスにあり、したがって(少なくとも部分的に)同じクラスにあります。
オブジェクトの equals メソッドは、他のオブジェクトを取ることができます。ただし、リンゴとオレンジを比較するときに true を返さないのは実装次第です。
リストの要素が String 以外の型の場合、常に false を返します。メソッドのString
ドキュメントからequals
:
この文字列を指定されたオブジェクトと比較します。引数が null ではなく、このオブジェクトと同じ文字シーケンスを表す String オブジェクトである場合にのみ、結果は true になります。
これは通常、equals メソッドに当てはまります。比較対象のオブジェクトが同じクラスまたは前者のサブクラスである場合にのみ、true を返すか、または返す必要があります。
次のように書くことは完全に有効です。
public class MyClass {
public boolean equals(Object o) {
if(o instanceof SomeUnrelatedClass) return true;
return false;
}
}
しかし、少なくとも私はそれを避けようとするので、それはお勧めできません。MyClass
たとえば、オブジェクトをハッシュベースのコレクションに入れるなど、オブジェクトの処理が少し奇妙になります。