首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java泛型和类型转换

Java泛型和类型转换
EN

Stack Overflow用户
提问于 2013-04-20 17:09:13
回答 6查看 935关注 0票数 19

我有一个错误创建的容器对象,它将不同java类型(字符串、布尔值等)的值保存在一起。

代码语言:javascript
复制
public class BadlyCreatedClass {
    public Object get(String property) {
        ...;
    }
};

我们以这种方式从其中提取值

代码语言:javascript
复制
String myStr = (String) badlyCreatedObj.get("abc");
Date myDate = (Date) badlyCreatedObj.get("def");

我不得不用这个对象写一些新的代码,我想看看有没有干净的方法来做到这一点。更具体地说,下面哪种方法是首选的?

显式转换

代码语言:javascript
复制
String myStr = (String) badlyCreatedObj.get("abc")
Date myDate = (Date) badlyCreatedObj.get("def");

使用通用cast的

代码语言:javascript
复制
public <X> X genericGet(String property) {

}

public String getString(String property) { 
return genericGet(property); 
}

public Date getDate(String property) { 
return genericGet(property); 
}

使用Class.cast

代码语言:javascript
复制
<T> T get(String property, Class<T> cls) {
    ;
}

我已经在SO Java generic function: how to return Generic type上看了几个相关的问题,他们似乎都说这样的类型转换是危险的,ALthough我看不出三者之间有太大的区别,考虑到这一点,你更喜欢哪种方法?

谢谢

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16118578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档