在抽象工厂模式中,我使用的是泛型。我有扩展 Serializable 的 BaseEntity 接口,Employee 类实现了 BaseEntity。在抽象类中,我有这个 getJavaObj 方法
getJavaObj()
是一个接受 aLong empId
并返回 a的方法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 类型安全:未经检查的Map<String,capture#1-of ? extends BaseEntity>
转换为 Map
即使在类型转换之后,有没有办法避免类型转换或解决警告?由于我返回的对象确实通过 BaseEntity 接口扩展到 Serializable 。