我有以下接口和实现:
public interface Box<T> extends Serializable {
String getLabel();
T getContent();
}
public class BananaBox implements Box<Banana> {
private String label;
private Banana content;
public String getLabel() {
return label;
}
public Banana getContent() {
return content;
}
}
然后我在一个方法中使用这些类:
public void openAllBoxes(Set<Box> boxes) {
}
public class do() {
this.openAllBoxes(mySet)
}
我的 IDE intelliJ 突出显示
Set<Box>
,因为原始使用了参数化类“Box”,所以我将其设为通用:
public <T extends Box<T>> void openAllBoxes(Set<T> boxes) {
}
但是现在我的方法
openAllBoxes(mySet)
无效,因为它需要一个 Set<T>
而不是 Set<Box>
。确切的错误是reason: no instance(s) of type variable(s) T exist so that Banana conforms to Box<T>
,
我不明白应该做什么以及为什么。
谢谢!
感谢您的回答,我实际上混淆了两个泛型参数,现在正确的方法定义是
public <T, U extends Box<T>> void openAllBoxes(Set<U> boxes) {