我需要一个"泛型"基于方法param(className)强制转换。 像这样:
void save(DomainObject o, String className) {
doSomething((className) o);
}
所以我想演员" o"直接进入类的对象" className"。
我知道如何通过classname String实例化一个Object,但有没有简单的方法来管理我的转换问题?
答案 0 :(得分:1)
在您的情况下,您似乎已将类名称设为String
,在这种情况下,ManoDestra的答案将是合适的。但作为替代方案,您也可以使用此方法:
void save(DomainObject o, Class<?> type){
doSomething( type.cast(o) );
}
然后你会这样称呼它:
save( myObject, Integer.class );
答案 1 :(得分:0)
您可以使用Reflection来执行此操作...
void save(DomainObject o, String className) {
Class<?> clazz = Class.forName(className);
doSomething(clazz.cast(o));
}
您需要处理潜在的类别转换异常,但我相信您可以管理它:)
有关详细信息,请参阅此回复:https://stackoverflow.com/a/2127384/5969411