「動的同等物」とはどういう意味ですか?
this.getClass().isInstance(aClass)
の代わりに持つ目的は何なのだろうかthis instanceof aClass
?違いはありますか?
指定された Object が、この Class によって表されるオブジェクトと代入互換性があるかどうかを判断します。このメソッドは、Java 言語の instanceof 演算子に動的に相当します。
「動的同等物」とはどういう意味ですか?
this.getClass().isInstance(aClass)
の代わりに持つ目的は何なのだろうかthis instanceof aClass
?違いはありますか?
指定された Object が、この Class によって表されるオブジェクトと代入互換性があるかどうかを判断します。このメソッドは、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
は上記の通りです。
これら 2 つの式の主な違いは次のとおりです。
最初のものでaClass
は、値がオブジェクトである変数であり、Class
2 番目aClass
は、クラスの名前です。変数にすることはできません。