lambda表達(dá)式表示函數(shù)接口的實(shí)例。
根據(jù)上下文,一個(gè)lambda表達(dá)式可以映射到不同的函數(shù)接口類型。
編譯器推斷l(xiāng)ambda表達(dá)式的類型。
在下面的代碼中有兩個(gè)函數(shù)接口, Processor
和SecondProcessor
。
Processor
有一個(gè)名為 getStringLength
的方法,它接受一個(gè)字符串作為參數(shù),并返回 int
。
SecondProcessor
有一個(gè)名為 noName
的方法,它接受一個(gè)字符串作為參數(shù),并返回一個(gè) int
。
從代碼中,我們可以看到,我們可以為它們分配兩個(gè)相同的lambda表達(dá)式。
public class Main { public static void main(String[] argv) { Processor stringProcessor = (String str) -> str.length(); SecondProcessor secondProcessor = (String str) -> str.length(); //stringProcessor = secondProcessor; //compile error String name = "Java Lambda"; int length = stringProcessor.getStringLength(name); System.out.println(length); } } @FunctionalInterface interface Processor { int getStringLength(String str); } @FunctionalInterface interface SecondProcessor { int noName(String str); }
上面的代碼生成以下結(jié)果。
Processor
或 SecondProcessor
稱為目標(biāo)類型。
推斷l(xiāng)ambda表達(dá)式類型的過程稱為目標(biāo)類型。
編譯器使用以下規(guī)則來(lái)確定lambda表達(dá)式是否可分配給其目標(biāo)類型:
更多建議: