我以为我知道我在使用仿制药做了什么,但显然不是。
ArraySetList<char> setA = new ArraySetList<char>();
编译时给出:
error: unexpected type
ArraySetList<char> setA = new ArraySetList<char>();
^
required: reference
found: char
以及所有后续char的相同错误。我想知道如何声明一个新的字符ArraySetList。
以下是我的所有文件。
http://pastebin.com/4h37Xvu4 // ArraySetList (extends ArrayUnsortedList)
http://pastebin.com/FxmynzkC // Driver
http://pastebin.com/CgVA0zjY //ArrayUnsortedList (implements ListInterface)
http://pastebin.com/3iXrCsCc //ListInterface\
答案 0 :(得分:11)
Java Generics适用于对象,而不适用于原始数据类型。但是,如果您需要存储原始数据类型,则需要使用相应的包装类对象 这些类只是“包裹”原始数据类型,为它们提供对象外观。
对于char
,相应的包装类为Character
,因此,您必须编写代码行:
ArraySetList<Character> setA = new ArraySetList<Character>();
请阅读:http://docs.oracle.com/javase/tutorial/java/data/numberclasses.html
但是,添加元素时,您将添加普通char
。这是因为Java会自动将其转换为Character
并自动将其转换为char
,如果需要的话。这称为自动装箱转换。
Autoboxing是Java编译器自动转换 原始类型与其对应的对象包装器之间 类。例如,将int转换为Integer,将double转换为a 双,等等。如果转换是另一种方式,那就是 称为拆箱。
来源:http://docs.oracle.com/javase/tutorial/java/data/autoboxing.html
答案 1 :(得分:7)
泛型类型参数需要引用类型(通配符)。
您不能使用原始类型(有关更多信息,请参阅restrictions);
ArraySetList<Character> setA = new ArraySetList<Character>();