微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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非泛型,并在必要时使用强制转换.泛型被引入该语言,以帮助程序员编写正确的,类型安全的程序.当你的类之间有复杂或循环的关系时,弄清楚如何正确使用泛型变得如此困难和耗时,使用它们的好处根本就不存在.

原文地址:https://www.jb51.cc/java/129206.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐