Java泛型和继承递归

nav*_*ige 8 java generics

我遇到了以下使用泛型和继承的Java代码.我真的不明白以下代码片段的作用:

class A<B extends A<B>> {
   ...
}
Run Code Online (Sandbox Code Playgroud)

这段代码有什么作用?

(我从MapDB中的DBMaker那里得到了这个)

And*_*niy 5

几乎很明显,这个问题实际上分为两个部分:

1)为什么B extends A

2)为什么A里面B extends A<B>有泛型B

这些部分的答案将是:

1)在特定的示例中,此类(A)是构建器类(称为DBMaker),因此其大多数方法返回某种类型,从而扩展了该构建器的类类型。这就说明了,为什么B要扩展A课堂。

2)但是,实际上,如果我们将第二部分隐藏起来...extends A<B>,我们将得到just class A<B>。因此A具有type的type变量B。这就是为什么在...extends A<B>A中将A其标记为具有type variable的类型B

  • 为什么**这个**被否决了?我正要发布我的想法,说我可以进行这项工作(就像其他人一样完成了……),但是我没有找到真正的用例。Andremoniy给出了这种构造的“真实”用例。(为此+1) (3认同)