最近在開發swing應用程序時,有人告訴我使用(ComponentClassName) Beans.instantiate(MyClass.class.getClassLoader(), ComponentClassName.class.getName())
來創建組件對象而不是使用「new」。我想知道正確的方法。Java swing組件實例化
0
A
回答
1
如果要實例化的類型是動態選擇的,則可以使用Beans.instantiate()。通常,新的關鍵字工作得很好,而且我總是在Swing應用程序中使用它。
1
我認爲正確的做法將是使用新的關鍵字,畢竟,這是它的作用。你使用Beans的方式似乎有點被強制,因爲你知道你想實例化的類的類型。其次,因爲這是一個swing應用程序,所以很可能你正在使用默認的swing類(可能會擴展其中的一部分)。這種方法的另一個問題是你必須有一個沒有參數的構造函數。 Class.forName()可用於與上述代碼相同的內容,但如果您不想在運行時動態創建類,請使用new關鍵字。
相關問題
- 1. Java swing組件序列化
- 2. 是否實例化組合對象在Java中實例化它們的組件
- 3. 的Java Swing組件初始化
- 4. Java實例化
- 5. 的Java Swing組件
- 6. Java Swing - 分組組件
- 7. Java實例化新的Map.Entry數組
- 8. Java數組,實例化和排序
- 9. Java類實例化
- 10. 類實例化Java
- 11. Java類實例化
- 12. Java swing設計:靜態vs實例
- 13. Swing組件和序列化
- 14. Netbeans Java Swing組件冗餘
- 15. Java swing組件被凍結
- 16. Java Swing和組件定位
- 17. Java Swing ghost/doubled組件?
- 18. 未顯示Java Swing組件
- 19. Java Swing - 半透明組件
- 20. 建議Java Swing組件庫
- 21. Java Swing MVC動態組件
- 22. Java Swing組件放置
- 23. Java/swing:控制檯組件?
- 24. 的Java Swing組件刷新
- 25. Java Swing:居中組件
- 26. Tomcat/Seam Seam組件實例化異常
- 27. Java Swing組織
- 28. Flex:實例化mxml組件的問題
- 29. 無法實例化Seam組件:org.jboss.seam.core.ConversationIdGenerator
- 30. 從指令實例化組件
你爲什麼要那樣做?沒有意義。使用新的。 –
@JB Nizet-感謝您的回答。順便說一下,有人告訴我,上述方法的運行速度會更快,但我對此持懷疑態度。這就是我問這個問題的原因。 – DpkTheJavaCoder
實際上它會變慢。代碼使用反射來調用新的ComponentClassName()。反射調用比直接調用要慢,不是類型安全,時間更長,可讀性更差,並且最終完成同樣的事情。 –