gpt4 book ai didi

java - java中带有通配符的通用接口(interface)

转载 作者:行者123 更新时间:2023-12-02 06:02:03 25 4
gpt4 key购买 nike

我对混合 Java 泛型接口(interface)和类型通配符感到有点困惑。我正在尝试实现一种通用方法,将选项列表传递给编译类型中选项类型未知的方法。

我按照以下方式做了,但在编译时出现错误。

通用接口(interface):

public interface IOption<T> { 
public T getOption();
}

此方法应该输入未知类型的选项列表,因此我使用了通配符。

public interface IAction {
boolean do(Iterable<IOption<?>> options);
}

我创建了以下 boolean 选项列表:

    IOption<Boolean> option =  new IOption<Boolean>(){
@Override
public Boolean getOption() {
return new Boolean(doEnable);
}
};
Iterable<IProjectStateOption<Boolean>> options =
Collections.singletonList(option);

但是当调用方法 do 时,我收到以下错误:

The method do( Iterable<IOption<?>>) in the type IAction is not applicable for 
the arguments (Iterable<IOption<Boolean>>)

最佳答案

Iterable<Option<Boolean>>无法转换为Iterable<Option<?>> ,尽管 Option<Boolean>可转换为 Option<?> .

您想要Iterable<? extends Option<?>> .

关于java - java中带有通配符的通用接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22594578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com