我以为我知道我在用泛型做什么,但显然不知道。
ArraySetList<char> setA = new ArraySetList<char>();
编译时给出:
error: unexpected type
ArraySetList<char> setA = new ArraySetList<char>();
^
required: reference
found: char
以及所有后续字符的相同错误。我想知道如何声明一个新的字符数组集列表。
这是我的所有文件。
http://pastebin.com/4h37Xvu4 // ArraySetList (extends ArrayUnsortedList)
http://pastebin.com/FxmynzkC // Driver
http://pastebin.com/CgVA0zjY //ArrayUnsortedList (implements ListInterface)
http://pastebin.com/3iXrCsCc //ListInterface
Java 泛型适用于对象,不适用于原始数据类型。但是,如果需要存储基元数据类型,则需要使用其相应的包装类对象。
这些类只是"包装"基元数据类型,以赋予它们对象外观。
对于char
,相应的包装类是Character
的,因此,您必须按如下方式编写代码行:
ArraySetList<Character> setA = new ArraySetList<Character>();
请阅读:http://docs.oracle.com/javase/tutorial/java/data/numberclasses.html
但是,当您添加元素时,您将添加普通char
。这是因为Java会自动将其转换为Character
,并在需要时自动将其转换为char
。这称为自动装箱转换。
自动装箱是 Java 编译器进行的自动转换 在基元类型及其相应的对象包装器之间 类。例如,将 int 转换为整数,将双精度转换为 双倍,依此类推。如果转换以另一种方式进行,则为 称为拆箱。
来源: http://docs.oracle.com/javase/tutorial/java/data/autoboxing.html
泛型类型参数需要引用类型(或 wilcards)。
不能使用基元类型(有关详细信息,请参阅限制);
ArraySetList<Character> setA = new ArraySetList<Character>();
阅读 JLS 4.5.1 类型参数和通配符以了解可用类型