我为指定类型的子实体定义了一个接口(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/