基于param

时间:2016-04-01 19:17:34

标签: java generics casting

我需要一个"泛型"基于方法param(className)强制转换。 像这样:

void save(DomainObject o, String className) {
    doSomething((className) o);
}

所以我想演员" o"直接进入类的对象" className"。

我知道如何通过classname String实例化一个Object,但有没有简单的方法来管理我的转换问题?

2 个答案:

答案 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