0

演算子を使用して、オブジェクト A がクラス A のインスタンスであるかどうかを確認できることがわかっているためinstanceof、同様に、オブジェクト A がクラス B のインスタンスであるかどうかを確認できるかどうか疑問に思っていました。ここで、クラス A とクラス B の両方です。 X を拡張します。つまり、クラス A と B は兄弟です。

4

2 に答える 2

3

誤解しているかもしれませんが、ここではXがわからない、またはXの答えを見つけたいと思っています。

さて、すべてのクラスは兄弟であり、のように、それらはすべてObject共通の祖先を持っているので、メソッドは常にtrueを返します。

次のように、リフレクションを使用してすべての親クラスを取得することができる、2つのクラスの最も近い祖先を確認することをお勧めします。

Class superClass = arg1.getClass();
Class superSuperClass = superClass.getSuperclass();

そして、それらすべてを比較します(コードに問題がある場合は投稿してください!)

于 2012-07-16T11:34:02.393 に答える
0

演算子を使用している場合instanceofは、2 番目の引数の型をチェックします。例えば

Interface X{};
Class A implements X;
Class B implements X;

Object a=new A();
Object b=new B();

上記の階層 a instanceof Xでは、b instanceof Xが返されtrueます。しかし、そうa instanceof Bなるでしょう。falsea instanceof Atrue

したがって、オブジェクト a がクラス B のインスタンスであるかどうかだけを確認したい場合はa instanceof B、クラスが実装するインターフェイスに関係なく十分です。

于 2012-07-16T11:50:27.077 に答える