2

instanceof演算子で使用できる有効なクラス Type 変数はありますか? 例えば:

String s = "abc";

Class<?> classType = String.class;

if (s instanceof classType) {
    //do something
}

これに代わるものとして:

if (s.getClass() == classType) {
    //do something
}

パフォーマンス上の利点はありますか?

4

2 に答える 2

14

あなたがしていることは実際には同じではありません。サブクラスで何が起こるかを考えてみてください(サブクラス化できないことはわかっているStringので、String問題にならない場合)。

class A {}
class B extends A {}

B b = new B();
b instanceof A // true
b.getClass() == A.class // false

オブジェクトがあり、それが特定のタイプのインスタンスであるかどうかを知りたい場合、Classオブジェクトがある場合は、メソッドを使用できますClass#isInstance

どちらの場合も、パフォーマンスの違いは重要ではないと思います。

于 2012-08-01T01:54:52.833 に答える
3

もあります

Class<?> classType = String.class;

if (classType.isInstance(s)) {...

パフォーマンスに関しては、これらの違いはごくわずかだと思います。

于 2012-08-01T01:52:57.417 に答える