Java Lambda – Java交叉类型
Java 8引入了一种称为交集类型的新类型。
交叉类型是多种类型的交叉。
交叉路口类型可能在投射中显示为目标类型。
在两种类型之间使用Type1 & Type2
,以表示类型1,类型2的交集的新类型。
例子
以下代码使用具有交集类型的转型,创建一个新的合成类型,它是所有类型的子类型。
它创建两个接口,Calculator是一个功能接口,可以与lambda表达式一起使用。另一个称为 NonFunction
,它不是函数接口。 为了创建一个lambda表达式并赋值给 NonFunction
,我们使用&
来创建新的子类型。
交叉路口类型NonFunction & Calculator
是一个函数接口。
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{ }
例2
以下代码通过将 java.io.Serializable
标记接口与我们自己的功能接口相交来创建交集类型。
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); }
以这种方式,我们使一个lambda表达式可序列化。