- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
即使尝试为此想出一个干净的标题也是一个挑战。
基本思想是定义两个父类(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.
实际上,与我见过的其他一些使用泛型的方式相比,这一点也不糟糕。没有完全不同的方法可以实现您所缺少的。
唯一的选择(我认为你应该认真考虑)是制作 ChildBase
和 ParentBase
非泛型,只在必要时使用强制转换。泛型被引入该语言以帮助程序员编写正确的、类型安全的程序。当您的类之间存在复杂或循环关系时,弄清楚如何正确使用泛型会变得非常困难和耗时,以至于根本不存在使用泛型的好处。
关于java - 使用 List<?> 成员定义抽象泛型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33683582/
我是一名优秀的程序员,十分优秀!