我有一个错误创建的容器对象,它将不同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");
使用通用cast的
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 generic function: how to return Generic type上看了几个相关的问题,他们似乎都说这样的类型转换是危险的,ALthough我看不出三者之间有太大的区别,考虑到这一点,你更喜欢哪种方法?
谢谢
https://stackoverflow.com/questions/16118578
复制相似问题