我试图定义类型为int的通用LinkedList,但它会抛出一个编译错误
List<int> I = new LinkedList<int>();
答案 0 :(得分:3)
你必须使用包装类来做到这一点。
List<Integer> I = new LinkedList<Integer>();
您可以在此链接列表中插入int
,因为自动装箱会自动从此Integer
创建一个int
对象,并将其添加到LinkedList。
答案 1 :(得分:1)
您不能将基本类型用作泛型类型。如果你真的想这样做,那就是包装类(Integer
,Float
等)的用途。你可以这样做:
List<Integer> I = new LinkedList<Integer>();
由于自动装箱,您仍然可以将int
放入列表中。如果您在需要int
的情况下尝试使用Integer
,则系统会自动使用Integer
创建新的Integer.valueOf
,而是使用{。}}。
此外,在Java 7中,您可以使用菱形运算符并使用它:
List<Integer> I = new LinkedList<>();
这没有任何优势,除了输入速度更快。
答案 2 :(得分:1)
这是Java primitive wrapper classes的一个原因,因为你不能使用原语作为类型参数。在您的情况下,您需要Integer
:
List<Integer> I = new LinkedList<Integer>();
在Java 7+中,您不需要重复类型参数:
List<Integer> I = new LinkedList<>();
另请参阅:Generics