「動的に相当する」とはどういう意味ですか?isInstanceはinstanceofの「動的な同等物」であるとはどういう意味ですか?
this instanceof aClass
の代わりにthis.getClass().isInstance(aClass)
の目的は何ですか?違いはありますか?
指定されたオブジェクトがこのクラスで表される オブジェクトと割り当て互換性があるかどうかを判定します。このメソッドは、Java言語のinstanceof演算子の に相当する
「動的に相当する」とはどういう意味ですか?isInstanceはinstanceofの「動的な同等物」であるとはどういう意味ですか?
this instanceof aClass
の代わりにthis.getClass().isInstance(aClass)
の目的は何ですか?違いはありますか?
指定されたオブジェクトがこのクラスで表される オブジェクトと割り当て互換性があるかどうかを判定します。このメソッドは、Java言語のinstanceof演算子の に相当する
はいです。順序は同じではないだけでなく、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()
を呼び出すことがないように注意してください取得します。
instanceof
演算子は、オブジェクトが固定(静的)クラスのインスタンスであるかどうかを調べます。すなわちコンパイル時にその名前が分かっているクラスである。
Class.isInstance
メソッドを使用すると、動的クラスに対してテストすることができます。実行時にのみ既知のクラスである。
私はちょうど
this.getClass().isInstance(aClass)
の代わりthis instanceof aClass
を持つことの目的は何だろうか?違いはありますか?
isInstance
の目的は上記のとおりです。
これら二つの表現の主な違いは次のとおり、最初のもので
aClass
、その値Class
オブジェクトであり、2つ目に
可変あり、aClass
クラスの名前です:変数ではありません。