在泛型中接受自身作为类型参数有什么用
我看到了一些关于一个不相关的问题的代码,但它让我感到好奇,因为我从未见过Java泛型的这种结构。创建一个泛型类有什么用,它可以作为类型参数本身或自身的后代。下面是示例:
abstract class A<E extends A<E>> {
abstract void foo(E x);
}
首先想到的是一个以列表为参数的列表。使用这段代码感觉很奇怪,你如何声明A类型的变量?递归声明!?
这甚至有效吗?如果是这样,你们中是否有人在代码中看到过?它是如何被使用的?
编辑
事实上,事实证明我的问题与这个问题相同,只是措辞不同,但这个问题的答案也会回答我的问题。
也感谢您对奇怪的重复模板模式的引用,该模式提供了一些历史背景和有关该主题的进一步解释。
这个旧的博客文章可能给出了我为我们Java人找到的最好的解释。
现在很难在这里选择一个正确的答案,因为它们都是有帮助的,所以我会选择最终产生最多阅读材料的答案(上面引用)