java – 使用List <?>成员定义抽象泛型类

前端之家收集整理的这篇文章主要介绍了java – 使用List <?>成员定义抽象泛型类前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
即使试图为此提出一个干净的头衔也是一个挑战.

基本思想是定义两个超类:一个用于“子”项,其成员引用其“父”,另一个用于包含子对象的“父”列表.来自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非泛型,并在必要时使用强制转换.泛型被引入该语言,以帮助程序员编写正确的,类型安全的程序.当你的类之间有复杂或循环的关系时,弄清楚如何正确使用泛型变得如此困难和耗时,使用它们的好处根本就不存在.

猜你在找的Java相关文章