java - 自引用实体的通用签名?

标签 java generics self-reference

我为指定类型的子实体定义了一个接口(interface)。

// a child of T
interface IChildEntity<T> {
    T getParent();
}

现在我正在尝试为自引用实体定义一个接口(interface)。

首选以下哪一个定义?

interface ISelfReferencingEntity<T extends ISelfReferencingEntity<T>>
        extends IChildEntity<T> {
}
interface ISelfReferencingEntity<T extends ISelfReferencingEntity<T> & IChildEntity<T>>
        extends IChildEntity<T> {
}

这里有一个实际适用的实体类。

class Category implements ISelfReferencingEntity<Category> {

    @ManyToOne
    private Category parent;
}

原来关心的是是否添加& IChildEntity<T>extends IChildEntity<T>一起部分是否多余。

最佳答案

T extends ISelfReferencingEntity<T>意味着T extends IChildEntity<T>ISelfReferencingEntity<T>IChildEntity<T> 的子类型。因此,添加& IChildEntity<T>T extends ISelfReferencingEntity<T>是多余的。

首选以下定义:

interface ISelfReferencingEntity<T extends ISelfReferencingEntity<T>>
        extends IChildEntity<T> {
}

关于java - 自引用实体的通用签名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61200066/

相关文章:

c# - 多对多(自相关)特定订单 Entity Framework

java - 运行相机应用程序时出错

java - 如何在 Java Swing 中正确设计 MV 应用程序?

java - 如何在Android上获取本地网络中所有设备的IP地址和名称

java - 带有字符串类名的泛型列表

SQL Server - 检查 ids 层次结构中的整数 (id)

c - 在 C 中操作链表时如何解决这个段错误问题?

java - 应用程序引擎 "hello world"不工作 (java)

generics - Kotlin:使泛型类型的子类继承函数并限制可用的输出类型

java - 为什么Java声称1.5版本需要向后兼容?