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
}
答案 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>();