2014-03-31 16 views
0

今天我遇到了一些我不明白的奇怪代碼。Java怪異算子() - >含義和字符串操作

什麼可以的意思是這樣() - > 例如

method(()-> System.out.println("Hello")); 

另一個問題是,什麼是字符串的輸出:

[AB][CD]*EF+(X/Y) 

當然有不的任何實例A,B等。但我有答案如

ABCDEFX, ACEFXX, ACEFXA,

我不記得他們

有人能幫助我嗎?

+1

第一個是lambda(Java 8中的新增功能);至於第二個,它是某些類的'.toString()'方法的輸出字符串... – fge

+2

這就是[lambda表達式]的語法(http://docs.oracle.com/javase/tutorial/ java/javaOO/lambdaexpressions.html) –

+0

1.那麼,什麼意思是空的括號,2.有我現在補充質疑的答案。 –

回答

3

假設你有一個聲明一個方法的接口:

public static interface MyFunctionalInterface { 
    void m1(); 
} 

而且你必須接收該類型的對象作爲參數的方法:

public void method(MyFunctionalInterface i) { ... } 

可以實現該接口和立即使用匿名內部類如下:

method(new MyFunctionalInterface() { 
    public void m1() { 
     System.out.println("Hello"); 
    } 
}); 

在Java 8 y OU可以替換與lambda表達式如一個你表明:

method(() -> System.out.println("Hello");); 

空參數表示m1()方法,不帶參數。

假設你正在使用的功能接口有一個方法用一個參數(如果你的方法有形式method2(ActionListener s) { ... }爲例),那麼你可以使用:

method2(e -> System.out.println("Hello");); 

這將是一樣的這樣做:

method2(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     System.out.println("Hello"); 
    } 
}); 

有大約在Java中8 This one Lambda表達式很多教程是一個很好的快速啓動。

+0

很好的答案!這是我的預期!謝謝 ;) –