【发布时间】:2012-11-28 15:03:48
【问题描述】:
在抽象工厂模式中,我使用的是泛型。 我有扩展 Serializable 的 BaseEntity 接口,Employee 类实现了 BaseEntity。 在抽象类中我有这个 getJavaObj 方法
getJavaObj() 是一个接受Long empId 并返回Map<String, ? extends BaseEntity> 的方法
public abstract Map<String, ? extends BaseEntity> getJavaObj(Long id);
我试图在它提供的主类中使用泛型;
Map<String, Employee> emp = getJavaObj(empId);
它给出了这个错误类型安全:Unchecked cast from Map<String,capture#1-of ? extends BaseEntity> to Map
当我像这样进行类型转换时
Map<String, Employee> emp = (Map<String, Employee>)getJavaObj(empId);
它给出了这个警告
类型安全:未经检查从
Map<String,capture#1-of ? extends Serializable>转换为 地图 类型安全:未经检查从Map<String,capture#1-of ? extends BaseEntity>转换为 地图
有没有办法避免类型转换或即使在类型转换之后也解决警告?因为我返回的对象确实通过 BaseEntity 接口扩展到 Serializable。
【问题讨论】:
标签: java generics abstract-factory