如果我知道它的名字,如何施放物体?

时间:2012-09-02 15:41:25

标签: java android reflection

我在字符串变量 model 中有类名,所以我想将一个对象转换为该加载类反射的类型

类名称我加载的是“通知”它是用字符串变量 模型

编写的
String model = "Notification";   
Class<?> cls = Class.forName("biznea.zredzic.pojo."+model);

所以我有抽象类PojoAbstract,它扩展了所有pojo类,因为它是cls或者实际上是Notification.class

public class Notification extends PojoAbstract{...}

现在我想把它转换为cls真实班级类型(通知)

WHAT_TO_PUT_HERE po = (WHAT_TO_PUT_HERE) gson.fromJson(json.toString(), cls);

我不希望po成为PojoAbstract类型,我希望它是Notification类型

我希望我很清楚:S

1 个答案:

答案 0 :(得分:3)

您应该使用Class<T>的方法public T cast(Object obj)

Object o = cls.cast(gson.fromJSon(json.toString(), cls));

但是你不能直接分配给静态声明,因为在编译时你不会知道类型。你必须尽可能多地保持声明的非特定性,因为你不能在编译时假设任何东西。