我想知道Java5提供的泛型是否有運行時優勢。我的意思是,我知道我們可以爲類/集合實現類型安全,併爲泛型提供了一系列可能的對象,但是在編譯時間之前運行時,我們會獲得什麼好處?Java泛型 - 任何運行時好處
回答
Java泛型在運行時通過erasure被刪除,所以性能應該是相同的。
有關它們的一些信息可以通過反射(例如在http://download.oracle.com/javase/6/docs/api/java/lang/reflect/Constructor.html#getTypeParameters%28%29中)來獲得,但它們不會使您的程序運行得更好。
CoolBeans,我認爲他的意思是「超越」編譯時間的好處。
明白了。感謝您的澄清。 – CoolBeans
是的 - 但它很小。
當你使用泛型時,你不需要使用instanceof
並且無處不在,所以不會生成對這些指令進行類型檢查的字節碼指令。不利的一面是,如果你鏈接到你的類的舊版本而不重新編譯它們,你可以在運行時結束一些相當低級別的錯誤。儘管如此,如果你大量使用一個緊湊的循環,否則需要一個演員陣容,那麼我想泛型可能會加快一點點。但性能改進不是使用它們的關鍵。
大多數鑄造指令仍然由編譯器生成,當你編寫沒有泛型的程序時,實際上是相同的,你也不需要你的instanceof測試。 –
- 1. java泛型運行時error.java.util.ConcurrentModificationException
- 2. 運行時泛型類型的Java
- 3. java泛型運行時類型
- 4. Java泛型運行時實例
- 5. Java性能運行時泛型
- 6. Java:如何在運行時獲得泛型類型?
- 7. 泛型運行時異常
- 8. Ada泛型在運行時
- 9. 泛型在運行時
- 10. 任何類型的Java泛型<?>
- 11. 如何在運行時解析泛型
- 12. Swift:運行時泛型類型推斷
- 13. 泛型友好型處理器地圖
- 14. 如何在Java中運行時生成泛型類?
- 15. java泛型:運行時類型檢查以確定策略
- 16. C#通行證泛型在運行時
- 17. Java泛型下行
- 18. 的Java:我如何在運行時得到泛型類型的類型
- 19. Java類泛型
- 20. java如何處理泛型引用
- 21. 'instanceof'的泛型運行時檢查
- 22. 泛型列表在運行時
- 23. 運行時錯誤與泛型
- 24. C#更簡單的運行時泛型
- 25. 在java中配對泛型類 - 如何最好地執行?
- 26. 確定Java運行時的泛型參數
- 27. Java中的通配符泛型有什麼好處?
- 28. 在Java泛型
- 29. 的Java /泛型
- 30. 關於Java中的泛化泛型的任何說法?
「在編譯時間前獲得運行時間」是什麼意思?你如何在沒有編譯的情況下運行? – CoolBeans
好吧,運行時好處更少ClassCastExceptions – samitgaur
更少的ClassCast異常id實際上並不是一個運行時好處 - 如果代碼正確,您不會收到它們。好處是編寫正確的代碼更容易。 – paulmurray