即使试图为此提出一个干净的头衔也是一个挑战.
基本思想是定义两个超类:一个用于“子”项,其成员引用其“父”,另一个用于包含子对象的“父”列表.来自child-> parent和parent-> child的链接是对称的.每个父/子超类都有子类,用于定义和实现其他功能.总是有一个并行子类,以便子对与父对子.也就是说,父级只包含子引用,而子级只引用父级 – 子类型之间没有“交叉”.
我怎么能代表这个呢?我已经坚持了好几天,而且我对多级嵌套泛型类型的创造性越强,它就越糟糕.这就是我想做的事情:
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 }
这是一团糟.我怀疑有一种更为简单,直接的方式,这可能是一个完全不同的方向.
解决方法
你的意思是ParentSub类扩展了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.
实际上,与我见过的仿制药使用的其他一些方法相比,这并不是那么糟糕.没有完全不同的方法可以实现这一目标.
唯一的选择(我认为你应该认真考虑)是使ChildBase和ParentBase非泛型,并在必要时使用强制转换.泛型被引入该语言,以帮助程序员编写正确的,类型安全的程序.当你的类之间有复杂或循环的关系时,弄清楚如何正确使用泛型变得如此困难和耗时,使用它们的好处根本就不存在.