Java- 声明新的泛型集时出现意外的类型错误



我以为我知道我在用泛型做什么,但显然不知道。

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 类型参数和通配符以了解可用类型

最新更新