提问者:小点点

泛型类中的泛型方法声明。边界允许不同的超级和没有它


此方法声明中有何错误?

public abstract class A<K extends Number>{  
   public abstract <K> A<K> useMe (A<K> k);
}

我看到编译错误:

java: type argument K is not within bounds of type-variable K

我对这个编译错误的第一个想法是 - 不能保证 K 在我的方法声明中是数字,这就是问题出现的原因。

但是在如下的另一种情况下:

public abstract <K> A<? extends Number> useMe (A<? super K> k);

A

有什么区别?


共2个答案

匿名用户

从类中删除扩展数字并使用方法添加它,即公共抽象类 A

匿名用户

好的,这里有一个不同的答案。原因是尽管您使用

abstract class A<K extends Number>{
    public abstract <T> A<T> useMe(A<T> t);
}

这里<代码>

abstract class A<K extends Number>{
    public abstract <T extends Number> A<T> useMe(A<T> k);
}