gpt4 book ai didi

Java 泛型 : Bound mismatch. 寻找有效的替代品

转载 作者:行者123 更新时间:2023-11-30 08:46:57 26 4
gpt4 key购买 nike

我有几个通用类:

public interface Data<E> {}
public interface Clonable<E extends Clonable<E>> {}
public interface NaturalNumberInterface extends Data<NaturalNumberInterface> {}
public class NaturalNumber implements NaturalNumberInterface {}
public interface SetInterface<E extends Data<E>> extends Clonable<SetInterface<E>> {}
public class Set<E extends Data<E>> implements SetInterface<E> {}

当我尝试创建 Set Set<NaturalNumber> s=new Set<NaturalNumber>(); 的新实例时编译器说:

NaturalNumber is not valid substitute for the type parameter <E extends Data<E>> of the type Set<E>

也许你能帮我找到错误,因为我花了很长时间没有找到解决方案。

最佳答案

我假设您的 SetInterface定义方式与 ListInterface 相同和 Data只是interface Data<T> .

SetInterface 的通用参数是F-bounded : E extends Data<E> .在您当前的代码中 NaturalNumber类型扩展 Data<NaturalNumberInterface> .所以如果ENaturalNumber ,则违反了条件,因为它应该扩展更具体的类型 Data<NaturalNumber> .

您应该为 NaturalNumberInterface 使用 F 边界还有:

public interface NaturalNumberInterface<T extends NaturalNumberInterface<T>> extends Data<T>
public class NaturalNumber implements NaturalNumberInterface<NaturalNumber>

这样就可以了。

关于Java 泛型 : Bound mismatch. 寻找有效的替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32691125/

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