2

我正在创建一个类,以 ListNode 作为内部类的双向链接列表。

public class DoublyLinkedList<Integer> {

    /** Return a representation of this list: its values, with adjacent
     * ones separated by ", ", "[" at the beginning, and "]" at the end. <br>
     * 
     * E.g. for the list containing 6 3 8 in that order, return "[6, 3, 8]". */
    public String toString() {
        String s;

        ListNode i = new ListNode(null, null, *new Integer(0)*);

为什么我得到错误,无法实例化类型Integer

4

1 回答 1

11

您的Integer类定义中的泛型类型参数隐藏了Integer包装类。

因此,new Integer(0)您在类中使用的是Integer类型参数,而不是Integer类型本身。因为,对于类型参数T,您不能只做 - new T();,因为该类型在该类中是通用的。编译器不知道它到底是什么类型。所以,代码无效。

尝试将您的课程更改为:

public class DoublyLinkedList<T> {
    public String toString() {
        ListNode i = new ListNode(null, null, new Integer(0));
        return ...;
    }
}

它会起作用的。但我怀疑你真的想要这个。我猜你想在你的泛型类中实例化类型参数。嗯,这是不可能直接的。

在实例化该类时传递实际的类型参数,如下所示:

DoublyLinkedList<Integer> dLinkedList = new DoublyLinkedList<>();

PS:如果你清楚地解释你的问题陈述,并在问题中加入更多上下文会更好。

于 2013-09-23T06:22:25.443 回答