gpt4 book ai didi

java - 为实现接口(interface)的类强制返回类型

转载 作者:搜寻专家 更新时间:2023-10-30 21:02:57 27 4
gpt4 key购买 nike

如何强制实现类中的 getFoo() 方法返回相同实现类类型的列表。

public interface Bar{
....
List<? extends Bar> getFoo();
}

现在一个实现 Bar 的类返回任何实现 Bar 的类的对象。我想让它更严格,以便实现 Bar 的类在 getFoo() 中返回一个仅属于其类型的对象列表。

最佳答案

不幸的是,这不能由 Java 的类型系统强制执行。

不过,您可以通过以下方式获得非常接近的效果:

public interface Bar<T extends Bar<T>> {
List<T> getFoo();
}

然后你的实现类可以像这样实现它:

public class SomeSpecificBar implements Bar<SomeSpecificBar> {
// Compiler will enforce the type here
@Override
public List<SomeSpecificBar> getFoo() {
// ...
}
}

但是没有什么能阻止另一个类这样做:

public class EvilBar implements Bar<SomeSpecificBar> {
// The compiler's perfectly OK with this
@Override
public List<SomeSpecificBar> getFoo() {
// ...
}
}

关于java - 为实现接口(interface)的类强制返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8407882/

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