0

2 つの異なるクラスの 2 つのオブジェクトを比較することは可能ですか。

クラスAのすべてのオブジェクトを追加するベクトルがあるとしましょう。文字列をベクトルの要素と比較したいと思います。

例:

if(string.equals(vector.get(i)))

これは可能ですか?

4

5 に答える 5

3

はい、電話できますequals()。ただし、引数が別のクラス (おそらくサブクラス以外) のものである場合、 の妥当な実装SomeClass.equals()は戻ります。false

stringが のインスタンスである場合、java.lang.Stringこの動作は明確に保証されています。

結果は、引数がこのオブジェクトと同じ文字シーケンスを表すオブジェクトでなく、そのオブジェクトであるtrue場合にのみ得られます。nullString

于 2012-12-04T20:41:25.587 に答える
1

あなたのオブジェクトは少なくともオブジェクトクラスにあり、したがって(少なくとも部分的に)同じクラスにあります。

于 2012-12-04T20:42:24.610 に答える
0

オブジェクトの equals メソッドは、他のオブジェクトを取ることができます。ただし、リンゴとオレンジを比較するときに true を返さないのは実装次第です。

于 2012-12-04T20:42:54.507 に答える
0

リストの要素が String 以外の型の場合、常に false を返します。メソッドのStringドキュメントからequals

この文字列を指定されたオブジェクトと比較します。引数が null ではなく、このオブジェクトと同じ文字シーケンスを表す String オブジェクトである場合にのみ、結果は true になります。

これは通常、equals メソッドに当てはまります。比較対象のオブジェクトが同じクラスまたは前者のサブクラスである場合にのみ、true を返すか、または返す必要があります。

于 2012-12-04T20:44:17.260 に答える
0

次のように書くことは完全に有効です。

public class MyClass {
    public boolean equals(Object o) {
        if(o instanceof SomeUnrelatedClass) return true;
        return false;
    }
}

しかし、少なくとも私はそれを避けようとするので、それはお勧めできません。MyClassたとえば、オブジェクトをハッシュベースのコレクションに入れるなど、オブジェクトの処理が少し奇妙になります。

于 2012-12-04T20:44:50.010 に答える