Java 8引入了一種稱為交集類型的新類型。
交叉類型是多種類型的交叉。
交叉路口類型可能在投射中顯示為目標(biāo)類型。
在兩種類型之間使用Type1 & Type2
,以表示類型1,類型2的交集的新類型。
以下代碼使用具有交集類型的轉(zhuǎn)型,創(chuàng)建一個(gè)新的合成類型,它是所有類型的子類型。
它創(chuàng)建兩個(gè)接口,Calculator是一個(gè)功能接口,可以與lambda表達(dá)式一起使用。另一個(gè)稱為 NonFunction
,它不是函數(shù)接口。 為了創(chuàng)建一個(gè)lambda表達(dá)式并賦值給 NonFunction
,我們使用&
來創(chuàng)建新的子類型。
交叉路口類型NonFunction & Calculator
是一個(gè)函數(shù)接口。
public class Main { public static void main(String[] argv) { NonFunction nonFunction = (NonFunction & Calculator) (x,y)-> x + y; } } @FunctionalInterface interface Calculator{ long calculate(long x, long y); } interface NonFunction{ }
以下代碼通過將 java.io.Serializable
標(biāo)記接口與我們自己的功能接口相交來創(chuàng)建交集類型。
public class Main { public static void main(String[] argv) { java.io.Serializable ser = (java.io.Serializable & Calculator) (x,y)-> x + y; } } @FunctionalInterface interface Calculator{ long calculate(long x, long y); }
以這種方式,我們使一個(gè)lambda表達(dá)式可序列化。
更多建議: