Java 交叉类型

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

版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《Java 交叉类型》
文章链接:https://zhuji.vsping.com/294180.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。