使用反射将对象类型动态转换为特定的类类型

时间:2017-07-23 22:45:02

标签: java reflection

我有很多Cog类都很相似,我需要根据类path.Cog_1,Cog_2,...,Cog_N将它们添加到Cog类型的参数化列表中。反正是否有使用反射将对象类型转换为特定的Cog类,如果我有路径?

main(){
    List<Cog> CogList = LIsts.newArrayList();
    List<Cog_2> CogList_2 = LIsts.newArrayList();

    CogList.add(createObject("path.to.Cog");
    CogList_2.add(createObject("path.to.Cog_2");

    Class<?> clazz3 = Class.forName("path.to.Cog_3");
    //CogList_3.add(clazz3.cast(result);  Error add (Cog_3) to list cannot be applied to capture <?>
}

public Object createObject(String classPath){
    Class<?> clazz = Class.forName(classPath);
    Constructor<?> cons = clazz.getConstructor();
    return  Object object = cons.newInstance();
}

我宁愿不必手动转换每个对象进行输入。它可以工作,但是会添加许多锅炉板代码。

if (result instanceof Cog_10){
    (Cog_10) clazz.cast(result)
}

0 个答案:

没有答案