我有一个糟糕的容器对象,它包含不同Java类型(String、Boolean等)的值。
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泛型返回类型,它们似乎都说这种类型转换是危险的。虽然我没有看到三者之间有太大的区别,但在此情况下,您更喜欢哪种方法呢?
谢谢。