我有一堆简单的接口:
interface County extends Line{}
interface Country<C extends Line> extends LineContainer<C> {}
interface Line {}
interface LineContainer <L extends Line> {
public List<L> getLines();
}
和一个服务方法
public static <L extends Line,C extends LineContainer<L>> C getContainer( Class<C> containerType, Class<L> lineType ){
...somthing...
调用服务方法
Country<County> c = getContainer( Country.class, County.class );
没有错误,但检查器说:
类型安全:类型 Country 的表达需要未经检查的转换才能符合 Country
我不明白:通过以 County 作为 L-LineType 调用服务方法,C 是 L 的容器,C 由 Country 作为 C-Type 给出,因此,我预计类型推断会得出结论,即 Country对象将被送达。
谁能解释一下,为什么我错了,我是否以及如何实现我想要的?
背景:这个想法是 - 作为服务的用户 - 我可以根据需要自由组合容器和线路(只要服务提供商可以提供这些服务)