作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在抽象工厂模式中,我使用的是泛型。我有扩展 Serializable 的 BaseEntity 接口(interface),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);
它给出了这个错误 Type safety: Unchecked cast from Map<String,capture#1-of ? extends BaseEntity>
到 map
当我像这样进行类型转换时
Map<String, Employee> emp = (Map<String, Employee>)getJavaObj(empId);
它给出了这个警告
Type safety: Unchecked cast from
Map<String,capture#1-of ? extends Serializable>
to Map Type safety: Unchecked cast fromMap<String,capture#1-of ? extends BaseEntity>
to Map
有没有办法避免类型转换或在类型转换后解决警告?因为我返回的对象确实通过 BaseEntity 接口(interface)扩展到 Serializable。
最佳答案
重新定义你的工厂方法:
public abstract <T extends BaseEntity> Map<String, T> getJavaObj(Long id);
然后你可以在没有转换的情况下得到正确的类型:
Map<String, Employee> emp = getJavaObj(empId);
关于java - 泛型类型转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13813847/
我是一名优秀的程序员,十分优秀!