Java instanceof运算符

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

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

Interesting Posts