我有一个创建错误的容器对象,它将不同 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 泛型函数的相关问题:how to return Generic type,Java generic return type他们似乎都说这种类型转换是危险的,虽然我没有看到这三者之间有太大的区别,鉴于这种方法会你比较喜欢 ?
谢谢