[英]Diamond in Generics Java 1.7 - how to write this for Java Compiler in 1.6
[英]Eclipse Auto Complete: Java 1.7 Generics Diamond
我剛剛升級到 Luna(來自 Kepler),我注意到一些小(但很煩人)的問題:
自動完成無法為變量初始化中已經指定的泛型生成菱形“<>”。 例如,當我輸入:
Set<String> mySet = new HashSet
我希望它會自動完成
Set<String> mySet = new HashSet<>();
而不是
Set<String> mySet = new HashSet<String>();
我使用的是 JDK 1.7,並且合規性級別也設置為 1.7。
同樣很奇怪的是,當我在自動完成期間多次點擊 STRG+Space 直到它再次到達 java-autocompletion 然后點擊 Enter 時,它會提供預期的鑽石。
這對我來說很像一個錯誤。
此錯誤是否“已知”,是否有解決此問題的方法? 找不到與此主題相關的任何內容。
您很可能已經安裝了Code Recommenders插件。 不幸的是,這個插件受到錯誤 #435597 的影響,它破壞了這個功能。
僅當您在“ '默認'內容輔助列表”( Eclipse 首選項 > Java > 編輯器 > 內容輔助 > 高級)中啟用了某些建議類型時,才會出現此錯誤。 例如,我可以通過禁用以下提議類型來恢復正確的行為:
(如果您使用的是代碼模板,最后一個可能是最煩人的……)
當你用ctrl + space循環時,你實際上是到達了“ Java Proposals ”(而不是“ Intelligent Java Proposals (Code Recommenders) ”),它不受這個 bug 的影響。
此錯誤計划於 2015 年 6 月發布 2.2.0 。目前您能做的最好的事情是:
Set
是一個接口而不是一個實現,因此 IDE 只能假設您需要一個始終需要泛型類型參數的匿名內部類型。 你可以做
Set<String> mySet = new HashSet + CTRL + SPACE
這個菱形特性是在 jdk 1.8 中引入的,它不適用於 jdk 1.7。
所以它是 oracle 引入的新特性。
因此,這僅取決於您計算機上的 jdk 版本,而不是 ide 版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.