为什么Java 7和Eclipse 3.8编译器不能使用新的Java 7钻石运算符编译JDK代码?

Han*_*cht 10 java generics diamond-operator java-7

import java.util.*;

public class SimpleArrays
{
  @SafeVarargs
  public static <T> List<T> asList( T... a )
  {
    return new ArrayList<>( a );
  }
}
Run Code Online (Sandbox Code Playgroud)

asList() 取自Oracles JDK实现的java.util.Arrays.

错误是

error: cannot infer type arguments for ArrayList<>
    return new ArrayList<>( a );
1 error
Run Code Online (Sandbox Code Playgroud)

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

Paŭ*_*ann 9

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

特别是,这个类有一个构造函数,它接受一个没有的T[]as参数java.util.ArrayList.

复制这个类,它也可以工作.

  • 我仍然想知道为什么他们为数组包装器选择了如此令人困惑的名称。 (2认同)