实体接口:
public interface Entity<Id>
{
Id getId();
}
还有道:
public interface Dao<T extends Entity<Id>, Id>
{
T find(Id id);
}
如果我尝试在Dao(Id)上删除第二个类型参数,则会出现“无法将Id解析为类型”的错误。我的问题是,如果有可能消除Dao上的第二个类型参数,因为它实际上是多余的。
明确一下,我试图避免在使用Dao的任何地方重复 Id 类型。在实体接口中指定该类型应该足够。
现在,我必须像这样重复自己:
private Dao<Car, UUID> carDb;
我在使用Car Dao的任何地方。
find
方法返回T
? - Jon Skeet