我有一个带有泛型类型参数的非常简单的接口。
public interface Foo<T> {
void add(T element);
}
现在,我在这样的类中有一个这个接口的变量:
public class Bar {
private Foo<?> foo;
public void action() {
Object o = new Object();
(Foo<Object> foo).add(o); // in my case i know that this will work
}
}
但是现在,如果我修改接口使得类型参数必须扩展Comparable<T>,我怎样才能达到和上面一样的效果?
public interface Foo<T extends Comparable<T>> {
void add(T element);
}
public class Bar {
private Foo<?> foo;
public void action() {
Object o = new Object();
// compiler error, since Object does not extent Comparable
(Foo<Object> foo).add(o);
}
}
更新:
我有很多类实现了这个接口,例如:
public class IntFoo implements Foo<Integer> {
public void add(Integer element) {
// do something
}
}
在我的Bar班级中,我有一个Foo<?>,我想使用add(). 我已采取预防措施(例如使用instanceof),仅Integer在类型为 时添加Foo<Integer>。
PIPIONE
相关分类