Java 交叉类型

2018-03-18 17:12 更新

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表达式可序列化。



以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号