泛型出错了

时间:2013-11-24 23:07:31

标签: java

public class Ctrl {
    LinkedStack<T> x = new LinkedStack<T>();

我第一次尝试使用泛型,我得到的错误是“此行上的多个标记 - T无法解析为上述行的类型”。我做得不对?

public class LinkedStack<E> {
    private static class LinkedNode<T> 
    {
        private T item;
        private LinkedNode<T> next;

        private LinkedNode(T value) 
        {
            item = value;
            next = null;
        }

            private LinkedNode(T value, LinkedNode<T> reference) 
            {
                item = value;
                next = reference;
            }
        }
 protected LinkedNode<E> top;
    public LinkedStack() 
    {
        top = null;     // empty stack
    }

1 个答案:

答案 0 :(得分:3)

在任何地方使用相同的类型参数名称。

然后将其作为参数添加到Ctrl类。

public class Ctrl<T> {
    LinkedStack<T> x = new LinkedStack<T>();

现在所有具体实现都必须定义T。例如:

public class AppCtrl extends Ctrl<Integer> {
}

或者用具体类型实例化它。

Ctrl myctrl = new Ctrl<Integer>();// + necessary constructor params

或者如果您不想传递它,请直接在Ctrl

中指定
public class Ctrl {
        LinkedStack<Integer> x = new LinkedStack<Integer>();