6

「動的同等物」とはどういう意味ですか?

this.getClass().isInstance(aClass)の代わりに持つ目的は何なのだろうかthis instanceof aClass?違いはありますか?

指定された Object が、この Class によって表されるオブジェクトと代入互換性があるかどうかを判断します。このメソッドは、Java 言語の instanceof 演算子に動的に相当します。

4

2 に答える 2

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()てください。ClassgetClass()

于 2013-09-02T14:25:40.400 に答える
4

オペレーターはinstanceof、オブジェクトが固定 (静的) クラスのインスタンスであるかどうかをテストします。つまり、コンパイル時に名前がわかっているクラスです。

このClass.isInstanceメソッドを使用すると、動的クラスに対してテストできます。つまり、実行時にのみ認識されるクラスです。


this.getClass().isInstance(aClass)の代わりに持つ目的は何なのだろうかthis instanceof aClass?違いはありますか?

の目的isInstanceは上記の通りです。

これら 2 つの式の主な違いは次のとおりです。

  • 最初のものでaClassは、値がオブジェクトである変数であり、Class

  • 2 番目aClassは、クラスの名前です。変数にすることはできません。

于 2013-09-02T14:27:15.200 に答える