public class Stack {
private LinkedList<? extends Number> stack;
public <T extends Number> void push(T t){
stack.add(t);
}
public <T extends Number>T pop(){
return stack.removeLast();
}
}
添加和删除last方法都会产生编译时错误。请帮我理解我在这里做错了什么?
推送错误 -
该方法在类型中添加(捕获#1-of?extends Number) LinkedList不适用于 参数(T)
弹出错误 -
类型不匹配:无法从捕获#2转换?将Number扩展为T
答案 0 :(得分:4)
?
与T
不同,您尚未在班级中定义T
(仅适用于这些方法)。因此,我建议你将整个Stack
类设为通用的:
public class Stack<T extends Number> {
private LinkedList<T> stack;
然后,您可以在T
和push()
方法中使用pop()
。
答案 1 :(得分:2)
为什么不让你的全班通用?像这样:
public class Stack <T extends Number>{
private LinkedList<T> stack;
public void push(T t){
stack.add(t);
}
public T pop(){
return stack.removeLast();
}
}