gpt4 book ai didi

java - 子类中的下限标高

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

我有一个类层次结构,可以简化为以下示例

public interface I<T> {
T get();
}

public interface II<T extends Number> extends I<T> {
}

public class A implements II<Integer> {
@Override
public Integer get() {
return null;
}
}

public class B implements II<Double> {
@Override
public Double get() {
return null;
}
}

现在当我尝试编译以下代码时

    II ii = new A();
Number n = ii.get();

我收到编译器错误(在第二行)

java: incompatible types: java.lang.Object cannot be converted to java.lang.Number

我明白这是因为它采用 I 的下界,即 Object (因为方法 get 是在 中声明的>I),但我预计它将采用 II 的下限。如何重构此层次结构,以便编译器将 Number 视为下限。唯一的限制是接口(interface) I 无法修改,因为它是库的一部分。

更新:我的想法是我想要一个通用的解决方案

    II ii = <any instance of classes that implements interface II>
Number n = ii.get();

最佳答案

其他都可以,声明需要改为II<Integer> ii = new A(); ,然后就可以了。

对于两者AB ,您可以使用II<? extends Number> = new A();

关于java - 子类中的下限标高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58931401/

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