gpt4 book ai didi

Java泛型字段

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:02:30 24 4
gpt4 key购买 nike

我没有看到我的错误,也不明白为什么它不起作用。我有以下类(class):

public class Generic<K extends Comparable<K>> implements Comparable<Generic<K>> {
// code

public static List<Generic<String>> factory1(){...}
public static List<Generic<Integer>> factory2(){...}

private K mKey;

@Override
public int compareTo(NoteGroup<K> another) {
return mKey.compareTo(another.mKey);
}
}

在另一个类中,我不关心泛型类型,而是想使用像这样的通配符:

public class Anothter {
private List<Generic<? extends Comparable>> mList;

private void method1() {
mList = Generic.factory1();
}

private void method2() {
mList = Generic.factory2();
}
}

但这行不通。错误消息是,需要扩展 Comparable 的类型,而不是 String/Integer。

我能解决我的问题吗?为什么我不能编译上面的代码片段?

编辑:错误在method1()method2() 中。我无法将工厂方法的结果分配给字段 mList。类型不兼容。

最佳答案

如其中一条评论所述 - 为了使您的代码正常工作,您需要更改 Another 类中的以下声明

private List<Generic<? extends Comparable>> mList;

到:

List<? extends Generic<?>> mList;

关于Java泛型字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26975700/

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