我需要使用已经"自定义"的特殊JRE批量编译.
Eclipse能够使用此JRE编译类,但我需要在Eclipse之外创建构建脚本.
Eclipse使用什么方法生成没有JDK的.class文件?
这是一个演示该问题的简单类:
package com.mimvista.debug;
public class DefaultCollisionTest {
public static interface Interface1 {
public String getName();
}
public static interface Interface2 {
public default String getName() { return "Mr. 2"; };
}
public static <X extends Interface1&Interface2> String extractName(X target) {
return target.getName();
}
}
Run Code Online (Sandbox Code Playgroud)
Eclipse(Neon 2)愉快地编译这个类,而javac(JDK 1.8.0_121)吐出以下编译错误:
$ javac src/com/mimvista/debug/DefaultCollisionTest.java
src\com\mimvista\debug\DefaultCollisionTest.java:13: error: class INT#1 inherits abstract and default for getName() from types Interface2 and Interface1
public static <X extends Interface1&Interface2> String extractName(X target) {
^
where INT#1 is an intersection …Run Code Online (Sandbox Code Playgroud) 我的一个朋友注意到了
var<Integer> list = new ArrayList<Double>();
Run Code Online (Sandbox Code Playgroud)
在 Java 中有效。事实证明, 的类型list被评估为ArrayList<Double>。
使用时var<Integer> list = new ArrayList<>();,list就是ArrayList<Object>。
我们俩都无法弄清楚泛型类型的var作用,因为它似乎被忽略了。但如果是这样,为什么这首先在语法上是正确的?