gpt4 book ai didi

java - 如何实现通用的递归接口(interface)?

转载 作者:行者123 更新时间:2023-11-30 02:27:07 25 4
gpt4 key购买 nike

Java 泛型混淆的另一个案例...

我正在定义一个接口(interface)层次结构,其中必须包含一个返回该接口(interface)类型列表的方法。这是递归通用模式的标准用例(或任何名称):

interface SuperInter<T extends SuperInter<T>> {
List<T> getEffects();
}

现在当我扩展这个接口(interface)时:

interface SubInter extends SuperInter<SubInter> {}

我可以实现子接口(interface)并且有正确的方法来实现:

class SubImpl implements SubInter {

@Override
public List<SubInter> getEffects() {
return null;
}
}

类似地,任何其他使用自身作为泛型类型的接口(interface)都将使其实现类包含一个返回该接口(interface)列表的方法。

但是,我无法正确实现 super 接口(interface)类型:

class SuperImpl implements SuperInter<SuperInter> {

@Override
public List<SuperInter> getEffects() {
return null;
}
}

除了原始类型警告之外,我得到:

Bound mismatch: The type SuperInter is not a valid substitute for the bounded parameter <T extends SuperInter<T>> of the type SuperInter<T>

我猜是因为该类不会扩展自身。我怎样才能实现这个目标?

最佳答案

您可以按如下方式声明它:

class SuperImpl implements SuperInter<SuperImpl> {

@Override
public List<SuperImpl> getEffects() {
return null;
}
}

关于java - 如何实现通用的递归接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45365837/

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