instanceof
演算子で使用できる有効なクラス Type 変数はありますか? 例えば:
String s = "abc";
Class<?> classType = String.class;
if (s instanceof classType) {
//do something
}
これに代わるものとして:
if (s.getClass() == classType) {
//do something
}
パフォーマンス上の利点はありますか?
instanceof
演算子で使用できる有効なクラス Type 変数はありますか? 例えば:
String s = "abc";
Class<?> classType = String.class;
if (s instanceof classType) {
//do something
}
これに代わるものとして:
if (s.getClass() == classType) {
//do something
}
パフォーマンス上の利点はありますか?
あなたがしていることは実際には同じではありません。サブクラスで何が起こるかを考えてみてください(サブクラス化できないことはわかっているString
ので、String
問題にならない場合)。
class A {}
class B extends A {}
B b = new B();
b instanceof A // true
b.getClass() == A.class // false
オブジェクトがあり、それが特定のタイプのインスタンスであるかどうかを知りたい場合、Class
オブジェクトがある場合は、メソッドを使用できますClass#isInstance
。
どちらの場合も、パフォーマンスの違いは重要ではないと思います。
もあります
Class<?> classType = String.class;
if (classType.isInstance(s)) {...
パフォーマンスに関しては、これらの違いはごくわずかだと思います。