簡體   English   中英

Eclipse 自動完成:Java 1.7 泛型鑽石

[英]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 > 編輯器 > 內容輔助 > 高級)中啟用了某些建議類型時,才會出現此錯誤。 例如,我可以通過禁用以下提議類型來恢復正確的行為:

  • 基本提案
  • JPA 提案
  • 模板提案

(如果您使用的是代碼模板,最后一個可能是最煩人的……)

當你用ctrl + space循環時,你實際上是到達了“ Java Proposals ”(而不是“ Intelligent Java Proposals (Code Recommenders) ”),它不受這個 bug 的影響。

此錯誤計划於 2015 年 6 月發布 2.2.0目前您能做的最好的事情是:

  • 使用建議來檢查哪些會為您觸發錯誤(可能在此之前先截取當前設置的屏幕截圖);
  • 錯誤 #435597錯誤 #435660投票修復它們;
  • 提出修復這些錯誤的補丁:-)

對於使用最新 Eclipse 版本仍然遇到此問題的任何人:

打開“窗口”>“首選項”>“Java”>“編輯器”>“內容輔助”>“高級”。 在“默認提案種類”下打開的對話框中:

  • 檢查“Java 提案”
  • 取消選中“Java 提案(以任務為中心)”

提案種類選擇

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.

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