Java 通用接口以self作为参数。递归泛型?

Java 通用接口以self作为参数。递归泛型?,java,generics,Java,Generics,免责声明:我对Java泛型没有太多的经验,但我和我的同事花了整整一个小时试图破解一个如下结构的接口: interface HasAttributes<A extends HasAttributes<A, B>, B extends HasAttributesType<B>> extends Identification<B> { 接口属性扩展了标识{ 当泛型接口采用本身的类型参数时,它到底意味着

免责声明:我对Java泛型没有太多的经验,但我和我的同事花了整整一个小时试图破解一个如下结构的接口:

interface HasAttributes<A extends HasAttributes<A, B>, 
                        B extends HasAttributesType<B>> extends Identification<B> {
接口属性扩展了标识{

当泛型接口采用本身的类型参数时,它到底意味着什么?这是做什么的?

这是有意义的-Java的Enum类是一个很好的例子:

public abstract class Enum<E extends Enum<E>>
    implements Comparable<E>, Serializable
公共抽象类枚举
实现可比较的、可序列化的

这里有一些启发性的答案,可以为你解释泛型的这个特殊用法,并且回答得比我更优雅。

你能不能至少在界面主体中添加一部分?嗯,好吧,并解释一下它的含义。很抱歉问题中的挫折感,但你必须理解试图理解极度复杂的代码所带来的挫败感。我们有四名经验丰富的开发人员试图理解这段代码,这段代码是由我们的第五个人编写的,他是一名非现场开发人员。我们谁也不能理解它的头绪。一个半小时后。所以不用说,我对w当我写这个问题时,
接口
不正确Java语法请阅读Angelika Langer的精彩解释:我在自己的代码中也使用了这一点,在阅读Angelika的常见问题解答“这有意义”之前,我也有同样的误解那么,你为什么不解释一下这个意思呢?@newacct虽然这是一个自定义的问题链接摘要,但我不认为在这种情况下,链接答案的复制粘贴会更有价值(它是指向另一个So问题的链接,因此将具有与此问题相同的生存期)…请随意阅读并总结这里的链接答案。@AlexeiLevenkov:好的。总结是:没有理由这样做。句号。@newacct我不这么认为……对我来说,它的存在有着非常坚实的理由。请注意,我对Java一无所知(因为我生活在C#world)-所以很有可能Java中不需要存在等价的
ILinkedList:where T:ILinkedList{public T next;}
。@AlexeiLevenkov:Interfaces在Java中不能有字段。但好的,我们可以将其更改为方法
T getNext()
。该接口中的任何内容都不依赖于
T
扩展
ILinkedList
。如果将其更改为
interface ILinkedList{…}
,它的编译就可以了。