簡體   English   中英

更快的是:instanceof或isInstance?

[英]What's faster: instanceof or isInstance?

除了設計問題,現代JVM的執行速度更快?

foo instanceof Bar

要么

Bar.class.isInstance(foo)

為什么?

Class.isInstance是JVM固有的。 它被編譯到完全一樣的instanceof做同樣的序列(從熱點源代碼的證明: 12 )。 也就是說,它們在性能方面是平等的。

foo instanceof Bar應該更快。

如果在編譯時不清楚擁有哪個類,則可以使用Bar.class.isInstance(foo)

考慮以下:

void test(Object o1, Object o2) {
   o1.getClass().isInstance(o2);
}

在此示例中,JVM在運行時確定哪個類調用該方法。 使用instanceof不可能。

因此,如果您在編譯時知道該類,則應使用instanceof

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM