当用另一个接口扩展一个接口时,是否应该指定泛型类型的具体类型?
我的意思是,如果我有一个界面:
public interface Repo<T>{
Collection<T> search(String params);
T get(String id);
}
然后是一大堆特定的存储库,例如客户端仓库, 客户回购协议等等...指定类型是否合理T扩展此接口时,例如:
public interface ClientRepo extends Repo<Client>{
}
public interface CustomerRepo extends Repo<Customer>{
}
其中 Client 和 Customer 只是一些类。
有人遇到过类似的问题吗?我的意思是我可以这样做:
public interface ClientRepo<T> extends Repo<T>{
}
Addendum:
也许我应该更清楚地表达我拥有特定 Repos(例如 ClientRepo)的意图。还有一个接口叫仓库工厂将适当的 Repo 返回给客户端,例如:
public interface RepoFactory{
ClientRepo createClientRepo();
CustomerRepo createCustomerRepo();
}
该工厂是由实施者反过来,它提供了具体存储库的适当实现。
事实上从上面你可以说这个界面仓库api 的客户端不使用。
我希望够混乱了!对不起 :(
我发现这样做有更多用处
public interface SomeRepo<T> extends Repo<T>{
}
比通过扩展接口
public interface ClientRepo extends Repo<Client>{
}
public interface CustomerRepo extends Repo<Customer>{
}
也就是说,我过去已经做过这两件事,并且将来很可能会同时做这两件事。如果您在后一个解决方案中检测到太多重复代码,我会尽力将其替换为前一个解决方案。
如果你想要任何实际问题,编译器似乎很难意识到“公共接口 ClientRepo 扩展 Repo”可以与 Repo 兼容。这种情况不会经常发生(但是当它发生时,需要多次尝试才能使泛型接口正确)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)