Why can’t the Java 7 and eclipse 3.8 compilers compile JDK code with the new Java 7 Diamond operator?

import java.util.*;
import java.util.*;

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

Aslist() is taken from Java util. Oracle JDK implementation of arrays

The mistake is

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

How can this work? Oracle uses the same compiler as ours

Solution

Note: Java util. The ArrayList used in the arrays class is not Java util. ArrayList, but nested class java util. Arrays. ArrayList.

In particular, this class has a constructor that takes t [] as a parameter, which Java util. ArrayList does not

Copying this class also works

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>