如何将ArrayList分配给List?

时间:2014-01-07 09:09:24

标签: java list arraylist openjdk

我有以下代码:

import java.util.*;

public class hello {
  public static void main( String[] args ) {
    Collection c = new ArrayList< Integer >();
    List l = new ArrayList< String >();
  }
}

并在“List l”行中获取错误:

hello.java:6: error: incompatible types
    List l = new ArrayList< String >();
             ^
  required: List
  found:    ArrayList<String>
1 error

我正在使用OpenJDK 1.7:

java version "1.7.0_25"
OpenJDK Runtime Environment (IcedTea 2.3.12) (7u25-2.3.12-4ubuntu3)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)

修改:当我使用List<String>时:

hello.java:6: error: type List does not take parameters
    List< String > l = new ArrayList< String >();
        ^
1 error

2 个答案:

答案 0 :(得分:5)

我已经使用我的OpenJDK javac检查了这一行:

List l = new ArrayList<String>();

它完全没有投诉。

基于你的第二个错误(“List不接受任何类型参数”),我的猜测是你在同一个包中定义了List类型,并且它优先于JDK类型,或者您正在使用更多未显示的导入语句,例如

import java.awt.*;

该软件包包含List小部件。

答案 1 :(得分:0)

使用相同的import语句,运行下面的代码并查看要导入的List类。

List l;
System.out.println(l.getClass().getName());

也可能在同一源文件或其他java源文件中将 List class 定义为内联,如下所示:在这种情况下,将使用该类:

package test;

import java.util.*;  //Implicitly imports java.util.list

class Test {
    List list;       //Not java.util.List type but test.List type
    System.out.println(List.class.getName());  //prints test.List
}

class List {}  //Class defined as inline in the same source file
相关问题