gpt4 book ai didi

Java 使用内部类类型扩展类

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:05:23 25 4
gpt4 key购买 nike

我有以下示例代码并在最后一行产生“类型参数不在其范围内”错误。 C/D 类通过继承重用了 A/B 中的大量代码。我将如何定义类 Y 以使其没有错误并仍然使用类 D 作为类型参数?有没有一种方法可以定义 D 类以使用 A.B,但仍然具有 D extends S for class Y 的签名?

public abstract class S<E extends S<E>> extends somethingElse {}
public abstract class R<E extends S<E>> {}

public class A extends Z {
public class B extends S<B> {
}
}

public class C extends A {
public class D extends A.B {
}
}

public class X extends R<B> {} // OK
public class Y extends R<D> {} // Error: Type parameter D is not within its bound; should extends S<D>

如有任何帮助,我们将不胜感激。

最佳答案

要让它编译,你可以改变E extends S<E>E extends S<? super E> :

public abstract class R<E extends S<? super E>> {}

这个问题的原因类似于another question我今天早些时候回答过。

没有有界通配符,D正在扩展 S<B>而不是 S<D> .

关于Java 使用内部类类型扩展类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57983626/

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