2013-09-02 11 views
6

「動的に相当する」とはどういう意味ですか?isInstanceはinstanceofの「動的な同等物」であるとはどういう意味ですか?

this instanceof aClassの代わりにthis.getClass().isInstance(aClass)の目的は何ですか?違いはありますか?

指定されたオブジェクトがこのクラスで表される オブジェクトと割り当て互換性があるかどうかを判定します。このメソッドは、Java言語のinstanceof演算子の に相当する

答えて

11

はいです。順序は同じではないだけでなく、object instanceof Clazzにはコンパイル時に知られているクラスが必要です。 clazz.isInstance(object)は実行時に知られているクラスをとることができます。

isInstanceは自動ボックスにも微妙な違いがありますが、instanceofはありません。

10 instanceof Integer // does not compile 
Integer.class.isInstance(10) // returns true 

Integer i = 10; 
if (i instanceof String) // does NOT compile 
if (String.class.isInstance(i)) // is false 

私はそれらを使用することをお勧めします。

注:object.getClass().getClass()を行うかmyClass.getClass()あればあなただけClassは、あなたがする必要がない場合getClass()を呼び出すことがないように注意してください取得します。

4

instanceof演算子は、オブジェクトが固定(静的)クラスのインスタンスであるかどうかを調べます。すなわちコンパイル時にその名前が分かっているクラスである。

Class.isInstanceメソッドを使用すると、動的クラスに対してテストすることができます。実行時にのみ既知のクラスである。


私はちょうどthis.getClass().isInstance(aClass)の代わりthis instanceof aClassを持つことの目的は何だろうか?違いはありますか?

isInstanceの目的は上記のとおりです。

これら二つの表現の主な違いは次のとおり、最初のもので

  • aClass、その値Classオブジェクトであり、2つ目に

  • 可変あり、aClassクラスの名前です:変数ではありません。

関連する問題