为什么可以';Java7和Eclipse3.8编译器是否使用新的Java7菱形操作符编译JDK代码?

为什么可以';Java7和Eclipse3.8编译器是否使用新的Java7菱形操作符编译JDK代码?,java,generics,java-7,diamond-operator,Java,Generics,Java 7,Diamond Operator,这怎么行?Oracle使用与我们相同的编译器。据我所知,Eclipse希望在模板化的ArrayList中找到一种特定类型进行推断。例如,如果方法的签名是: error: cannot infer type arguments for ArrayList<> return new ArrayList<>( a ); 1 error (注意:在java.util.Arrays类中使用的ArrayList不是java.util.ArrayList,而是一个嵌套类jav

这怎么行?Oracle使用与我们相同的编译器。

据我所知,Eclipse希望在模板化的
ArrayList
中找到一种特定类型进行推断。例如,如果方法的签名是:

error: cannot infer type arguments for ArrayList<>
    return new ArrayList<>( a );
1 error

(注意:在
java.util.Arrays
类中使用的
ArrayList
不是
java.util.ArrayList
,而是一个嵌套类
java.util.ArrayList

特别是,这个类有一个构造函数,它以
T[]
作为参数,而
java.util.ArrayList
没有


复制这个类,它也会工作。

请仔细阅读:“这是如何工作的?Oracle使用与我们相同的编译器。”源代码来自我所写的JDK“取自Oracles JDK对java.util.Arrays的实现”。抱歉,这个答案不正确。OP中的代码完全合法。您是否使用
javac
编译了此代码?请显示编译命令和
javac-version
的输出。我在NetBeans中也有同样的错误。但是,如果我用javac手动尝试,它是可以编译的。经验法则是:如果你认为你在java中发现了一个错误,并且有三行代码,那么你可能是做错了什么:)我仍然想知道为什么他们为数组包装器选择了一个如此混乱的名称。
error: cannot infer type arguments for ArrayList<>
    return new ArrayList<>( a );
1 error
public static List<Integer> asList( Integer... a )
      return new ArrayList<T>( a );