我的JPA模型POJO有一些泛型类,如下所示:
public interface Identifiable<PK extends Serializable> {
PK getUniqueId();
}
public interface GenericDao<T extends Identifiable<PK>> {
public T findById(PK id);
}
此代码无法编译。为此,我需要指定
public interface GenericDao<T extends Identifiable<PK>, PK extends Serializable>
但那是多余的信息!! T扩展的事实可识别意味着将为可识别实例指定PK类型,并且这是用于DAO PK的类型。
如何在没有多余信息的情况下完成这项工作?
谢谢,弗雷德
修改:简化示例
答案 0 :(得分:2)
你试过了吗?
public interface WatchableDao<T extends Watchable<?>>
(即它是Watchable<Something>
,但我不在乎Something
是什么)
我没有尝试过,但值得一试。
编辑:发布问题编辑,似乎你确实需要PK作为接口的类型参数。在这种情况下,我相信你必须像你一样有效地重复约束。是的,这是多余的,但我认为它比语言更简单,必须根据其作为其他地方的类型参数来指定适用于PK的有效约束。如果它是任何安慰,在C#中也是如此。它还使PK的约束仅从界面本身清除,而不是必须查看另一个界面以查看可行的。