2014-05-12 51 views
2

我想檢查Java 8與Eclipse Luna的集成,所以我從eclipse.org下載了M7 Luna。Eclipse和Java 8內容幫助

將JDK配置爲jdk8u5之後,我開始了一些測試。

比方說,你有一個很好的Runnable像

Runnable r = new Runnable() { 
    @Override 
    public void run() { 
     System.out.println("foo"); 
    } 
}; 

如果選擇

new Runnable() { 
    @Override 
    public void run() { 
    System.out.println("foo"); 
    } 
} 

塊,然後按Ctrl-1(快速修復),你得到的建議,將其更改爲lambda,導致Runnable r =() -> System.out.println("foo");,這非常酷。

但是更好的事情應該是實際幫助創建lambda表達式。例如,如果輸入Runnable r = |(with |爲光標位置),然後按ctrl + Space(內容輔助),我希望找到一個「在該功能界面中創建一個lambda表達式」選項彈出。但沒有新的可用。

你知道這將在未來實施嗎? 我認爲這可能與模板(首選項中的Java /編輯器/模板)有關,但我從未嘗試過使用它們。

+1

您應該在http://www.eclipse.org/forums/eclipse.tools.jdt或http://bugs.eclipse.org/上提出這些問題。 – nitind

回答

1

=之後提供很好的建議是相當棘手的,因爲幾乎所有的都可以放置在作業的右側。

即使在等號後面也沒有提出使用匿名內部類實現函數的舊方法。在提出建議之前,您必須鍵入四個字符new␣。四個字符正是您必須鍵入以創建一個lambda,但在這個地方建議創建一個lambda已經沒有意義了,因爲您已經創建了它。

所以提出一個lambda需要提高其優先級,而其他提議在等號之後出現,但它仍然具有相當有限的好處。你必須按CRTL + 空間,除非您使用自動彈出菜單,然後選擇「創建拉姆達」先手或者四個大字()->或類似name->插入而參數姓名(或名稱)很可能被改變後提案被插入。

對於內部類,讀取方法覆蓋,建議參數是有意義的,因爲您必須精確地重複所有參數類型,但對於可以省略所有批量的lambda節省是非常有限的。

所以,我不希望創建lambda的提議永遠不會出現在列表中。

+0

「幾乎所有的東西都可以放在作業的右側」 - 呃......不。這種說法幾乎與現實相反。右側賦值只能是一組非常有限的東西 - >當前作用域中的對象和字段,當前作用域或類路徑中的lambda /功能接口,已知的常量和靜態表達式以及它的相關信息。我猜測lambda將在未來的某個時間出現 - 一旦內容協助人員爲它找出一套體面的規則(就像他們在自動格式化中一樣) – specializt

+3

@specializt:**每個表達式**除「void '方法調用可以出現在賦值運算符的右邊,並且由於匿名內部類包含整個類定義。所以'package'聲明和'import'聲明是唯一不能出現在賦值運算符之後的東西。所以底線是*幾乎所有內容都可以在賦值運算符後出現。如果你想挑剔,選擇一個你真正瞭解的主題。 – Holger

+0

多數民衆贊成在可愛...除了它的完全幻想。請繼續嘗試將浮點值分配給布爾值,而不顯式忽略編譯器錯誤(如果甚至可能的話)/禁止內容輔助警告。沒有明確的轉換和錯誤忽略,就不可能將「幾乎任何東西」分配給變量。但是,既然你現在開始了一場火焰戰爭(侮辱等等),我會離開你到你想成爲現實的僞學術幻想。玩的開心。 – specializt