繁体   English   中英

Java instanceof运算符

[英]Java instanceof operator

是否有一个可以与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)) {...

至于性能,我预计其中任何一个之间的差异都可以忽略不计。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM