gpt4 book ai didi

java - 使用 List 成员定义抽象泛型类

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:37:17 25 4
gpt4 key购买 nike

即使尝试为此想出一个干净的标题也是一个挑战。

基本思想是定义两个父类(super class):一个用于“子”项目,其成员引用其“父”,另一个用于包含子对象的“父”列表。从 child->parent 和 parent->child 的链接是对称的。每个父/子父类(super class)都有定义和实现附加功能的子类。总有一个并行子类使得 child<A>parent<A> 配对.即 parent<A>将只包含 child<A>引用资料,以及 child<A>只会引用 parent<A> - 子类型之间没有“交叉”。

我该如何表示呢?几天来我一直坚持这个问题,我对多级嵌套泛型类型的创意越多,它就越糟糕。这就是我想要做的:

abstract class ChildBase<T extends ChildBase<T>> {
ParentBase<T> parent;
}
abstract class ParentBase<T extends ChildBase<T>> {
LinkedList<T> childList;
}
class ChildSub extends ChildBase<ChildSub> {
// ... class specific stuff
}
class ParentSub extends ParentBase<ChildSub> {
// ... class specific stuff
}

这是一团糟。我怀疑有一种更简单、更直接的方法可以做到这一点,而且它的方向可能完全不同。

最佳答案

你是说 class ParentSub extends ParentBase<ChildSub>

如果您进行这一项更改,则全部编译。

This is a mess. I suspect that there is a much simpler, straightforward way of doing this and it's probably in a totally different direction.

实际上,与我见过的其他一些使用泛型的方式相比,这一点也不糟糕。没有完全不同的方法可以实现您所缺少的。

唯一的选择(我认为你应该认真考虑)是制作 ChildBaseParentBase非泛型,只在必要时使用强制转换。泛型被引入该语言以帮助程序员编写正确的、类型安全的程序。当您的类之间存在复杂或循环关系时,弄清楚如何正确使用泛型会变得非常困难和耗时,以至于根本不存在使用泛型的好处。

关于java - 使用 List<?> 成员定义抽象泛型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33683582/

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