Java 泛型和类型转换
我有一个创建糟糕的容器对象,它将不同java类型的值(字符串,布尔值等)保存在一起。
public class BadlyCreatedClass {
public Object get(String property) {
...;
}
};
我们以这种方式从中提取价值
String myStr = (String) badlyCreatedObj.get("abc");
Date myDate = (Date) badlyCreatedObj.get("def");
我被迫使用此对象编写一些新代码,我正在尝试查看是否有干净的方法来执行此操作。更具体地说,下面哪种方法更可取?
显式转换
String myStr = (String) badlyCreatedObj.get("abc")
Date myDate = (Date) badlyCreatedObj.get("def");
使用通用强制转换
public <X> X genericGet(String property) {
}
public String getString(String property) {
return genericGet(property);
}
public Date getDate(String property) {
return genericGet(property);
}
使用 Class.cast
<T> T get(String property, Class<T> cls) {
;
}
我已经经历了几个关于SO Java泛型函数的相关问题:如何返回泛型类型,Java泛型返回类型,所有这些似乎都说这样的类型转换是危险的,虽然我没有看到三者之间有太大的区别,但鉴于此,您更喜欢哪种方法?
谢谢