如何调用泛型方法? [爪哇]

问题描述 投票:0回答:1

我有以下接口和实现:

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>
, 我不明白应该做什么以及为什么。

谢谢!

java generics
1个回答
0
投票

感谢您的回答,我实际上混淆了两个泛型参数,现在正确的方法定义是

    public <T, U extends Box<T>> void openAllBoxes(Set<U> boxes) {
© www.soinside.com 2019 - 2024. All rights reserved.