簡體   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