类型不匹配:无法从 capture#2-of 转换?将 Number 扩展到 T

G.D*_*G.D 5 java generics

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

添加和删​​除最后一个方法都会给出编译时错误。请帮助我理解我在这里做错了什么?

推送时出错 -

LinkedList 类型中的方法 add(capture#1-of ? extends Number) 不适用于参数 (T)

弹出错误 -

类型不匹配:无法从 capture#2-of 转换?将 Number 扩展到 T

rad*_*doh 5

?T与您尚未T在类中定义的东西不同(仅适用于这些方法)。因此我建议你让整个Stack类变得通用:

public class Stack<T extends Number> {
  private LinkedList<T> stack;
Run Code Online (Sandbox Code Playgroud)

T然后你可以在你的push()and方法中使用pop()