gpt4 book ai didi

Java泛型方法通配符不匹配问题

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:48:38 24 4
gpt4 key购买 nike

我想要实现的基本目标是映射引用列表 List<Ref<Thing>>实际对象的列表,但由父类(super class) List<SuperThing> 给出.在这个例子中,Thing extends SuperThingRef<Thing>有一个方法 public Thing get()获取引用的对象。

我认为有效的方法:

public <T> List<T> refsToObjects(List<Ref<? extends T>> list) {
List<T> result = new ArrayList<T>();
for(Ref<? extends T> ref : list) {
result.add(ref.get());
}
return result;
}

但是当我尝试使用它的时候

List<Ref<Thing>> refs;
List<SuperThing> objectList = refsToObjects(refs);

我收到此错误消息:The method refsToObjects(List<Ref<? extends T>>) is not applicable for the arguments (List<Ref<Thing>>)

我没有主动使用 ? extends T通配符结构,但我做错了什么?

最佳答案

如果您将“扩展”参数也指定为通用参数,它会起作用:

    public <T, S extends T> List<T> refsToObjects(List<Ref<S>> list) {
List<T> result = new ArrayList<T>();
for(Ref<S> ref : list) {
result.add(ref.get());
}
return result;
}

关于Java泛型方法通配符不匹配问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14136085/

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