gpt4 book ai didi

java - Lambda 和转换交集类型(Eclipse 编译器错误)

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:55:03 25 4
gpt4 key购买 nike

那么,为什么这段代码可以编译?

public static void main(String[] args) {
Calculator test = (Calculator & Sumator) (a, b) -> a + b;
System.out.println(test.calculate(2, 3));

Sumator sumator = (Calculator & Sumator) (a, b) -> a + b; // does compile, but throws an Exception
sumator.test();

Both both = (Both) (a, b) -> a + b; // does not compile
}

interface Calculator {
public int calculate(int a, int b);
}

interface Sumator {
public int test();

public int test3(int a, int b);
}

// intersection of both types
interface Both extends Sumator, Calculator {

}

这是一种误导,我确实知道如何转换为交集类型,我已经阅读了 jls,但仍然感到困惑。

这有点道理,为什么

 Serializable & Comparable 

会编译,因为这两者之间的结果(合成类型)是一个功能接口(interface),但为什么会这样:

 Calculator & Sumator 

有效吗?该合成类型不是功能接口(interface)。

最佳答案

这是一个 bug in Eclipse已针对 Eclipse Neon (4.6) 的里程碑 6 进行了修复。

关于java - Lambda 和转换交集类型(Eclipse 编译器错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35268927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com