我有以下代码:
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
答案 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