Java instanceof运算符

Java instanceof运算符,java,instanceof,comparison-operators,Java,Instanceof,Comparison Operators,是否存在可与instanceof运算符一起使用的有效类类型变量?例如: String s = "abc"; Class<?> classType = String.class; if (s instanceof classType) { //do something } 有什么性能优势吗?还有 Class<?> classType = String.class; if (classType.isInstance(s)) {... Class classT

是否存在可与
instanceof
运算符一起使用的有效类类型变量?例如:

String s = "abc";

Class<?> classType = String.class;

if (s instanceof classType) {
    //do something
}
有什么性能优势吗?

还有

Class<?> classType = String.class;

if (classType.isInstance(s)) {...
Class classType=String.Class;
如果(类类型.isInstance)){。。。

至于性能,我希望这些之间的差异是可以忽略的。

你所做的实际上不一样。考虑子类发生了什么(我知道你不能子类<代码>字符串< /C> >,所以在<代码>字符串事例无所谓。

如果您有一个对象,并且您想知道它是否是某一类型的实例,并且您有
Class
对象,那么可以使用
Class#isInstance
方法


在任何一种情况下,我都希望性能差异是微不足道的。

so X.class.isInstance(objectX)比执行objectX instanceof X快吗?它们不同。如果您有类类型,则使用第一个,因为您不能执行objectX instanceof xClass。当您要检查的类在编译时未知时,它有助于进行动态检查。我不确定我是否清楚,让我们这样说:java.lang.String.cass.isInstance(objectX)与objectX instanceof java.lang.String相比,您认为哪一个更快?我会立即猜测instanceof是因为它是一个内置的java构造,但您可以运行一些测试来找出。b.getClass()=a.class//false应该是b.getClass()=a.class//false(=而不是=)
Class<?> classType = String.class;

if (classType.isInstance(s)) {...
class A {}
class B extends A {}

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