gpt4 book ai didi

Java泛型可分配性

转载 作者:行者123 更新时间:2023-11-29 09:26:28 24 4
gpt4 key购买 nike

我在泛型类型参数的赋值能力上有些挣扎。

这是我的类型定义的样子:

public static interface CellValue<T> {
T getValue();
Class<?> getType();
}

public static class DoubleCell implements CellValue<Double> {
Double value;

public DoubleCell(Double value) {
super();
this.value = value;
}

@Override
public Double getValue() {
return value;
}

@Override
public Class<?> getType() {
return Double.class;
}
}

public static class FormulaCell implements CellValue<String> {
String value;

public FormulaCell(String value) {
this.value = value;
}

@Override
public String getValue() {
return value;
}

@Override
public Class<?> getType() {
return String.class;
}
}

现在,为什么下面的声明有效(对我来说,这是预期的行为,但我可能误解了它为什么有效)

Map<String, ? extends CellValue<?>> m = new HashMap<String, FormulaCell>();
Map<String, ? extends CellValue<?>> m2 = new HashMap<String, DoubleCell>();

..而下面的不是吗?

Map<Integer, Map<String, ? extends CellValue<?>>> n = new HashMap<Integer, Map<String, FormulaCell>>();
Map<Integer, Map<String, ? extends CellValue<?>>> n2 = new HashMap<Integer, Map<String, DoubleCell>>();

最佳答案

尝试 Map<Integer, ? extends Map<String, ? extends CellValue<?>>>相反。

关于Java泛型可分配性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59157415/

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