我在编译的maven项目中遇到了一些与java8相关的代码 使用javac编译器,但在Eclipse中给出了编译错误(我认为ECJ编译器与javac不同)。
我在Eclipse-Luna中导入它:Import => Maven =>存在Maven项目
作为一个快速修复,有没有办法让Eclipse在maven项目中使用javac(从而禁用ECJ编译器)?
编辑:添加编译器差异的最小poc示例。
此代码使用 javac 进行编译,但List-initialization在Eclipse中出错:"此表达式的目标类型必须是功能界面"
package test;
import static java.util.Arrays.asList;
import java.util.List;
public class Test01 {
private static final List<MyInterface> items = asList(() -> "123", () -> "456");
public void test01() {
System.out.println("Hello");
}
public interface MyInterface {
String value();
}
}
如果添加类型转换,错误消失:
private static final List<MyInterface> items = asList((MyInterface) () -> "123", (MyInterface) () -> "456");