我正在尝试编写一个简单的泛型类Operations<T extends Number>
,它有一个方法T sum()
。它应该接受任何Number
对象,并将其与T
一起返回。我强烈怀疑我应该使用有界通配符参数,但我不知道如何继续。
interface OperationsInterface<T extends Number> {
public T sum(Operations<? extends Number> v);
}
class Operations <T extends Number>
implements OperationsInterface<T> {
private T o;
public Operations(T o) {
this.o = o;
}
@Override
public T sum(Operations<? extends Number> v) {
}
}
答案 0 :(得分:1)
您甚至不需要:? extends Number
作为方法参数的类型参数。
您的界面可以是这样的:
interface OperationsInterface<T extends Number> {
public T sum(T... t);
}
因为你不能传递不是Number
的子类的类型参数。
你的实现类就是这样,即:
class Operations implements OperationsInterface<Integer> {
@Override
public Integer sum(Integer... t) {
// do sum
return null;
}
}
答案 1 :(得分:1)
如果您不想将参数绑定到T
,那么您当然可以这样做
interface OperationsInterface<T extends Number> {
public <N extends Number> T sum(Operations<N> v);
}
class Operations <T extends Number>
implements OperationsInterface<T> {
private T o;
public Operations(T o) {
this.o = o;
}
@Override
public <N extends Number> T sum(Operations<N> v) {
}
}
看看它是否适合你。