10. 交集类型 Java有一个很独特的特性称作交集类型(type intersections)。你可以声明一个泛型,它由两个类型的交集构成。例如: 要使用绑定的泛型参数 T 去实例化Test 类,这个参数就必须同时实现 Serializable 和 Cloneable。例如 String 不是,而 Date 是: 为了让你有一个专门的交集类型,这种特性在Java8中得到了重用。如何用它呢?几乎没用。但是,当你在 lambda 表达式中强行应用这样的类型时,就只有此种方法可行。 假设你在方法中使用了这种疯狂的类型约束: 你需要一个实现了Runnable 和Serializable 的对象。为了让你可以在某些地方执行它,或是发送它, Lambads 可以被序列化: 如果一个lambda 表达式的目标类型和所需参数是可序列化的,那么这个表达式就能序列化。 即使这是真的,那也不会自动的实现序列化标记接口,所以你必须自己动手。 现在你有一个可序列化的,但是它不能被执行。 所以你必须自己加上: 转自:http://code.csdn.net/news/2822720 |