Java 如果我知道如何投射对象';她叫什么名字?

Java 如果我知道如何投射对象';她叫什么名字?,java,android,reflection,Java,Android,Reflection,我在字符串变量model中有类名,所以我想将一个对象强制转换为加载的类ba反射的类型 类名我正在加载的是“通知”,它写在字符串变量model 现在我想将其转换为clsreal类类型(通知) 我不希望po成为PojoAbstract类型我希望它是Notification类型 我希望我说得很清楚:你应该使用类的方法 但是您不能直接分配给静态声明,因为在编译时您不知道类型。您必须尽可能地保持声明的非特定性,因为您不能在编译时假设任何东西。(最好说“非特定”而不是“泛型”……因为后者在Java中有其他含

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

类名我正在加载的是“通知”,它写在字符串变量model

现在我想将其转换为
cls
real类类型(通知)

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

我希望我说得很清楚:你应该使用
类的方法


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

(最好说“非特定”而不是“泛型”……因为后者在Java中有其他含义。)因此,如果
o
是对象类型,我如何使用通知类特定的方法,我知道o是通知的类型还是不是?你不能在编译时调用一个方法,它是动态已知类型的一部分。这与Java具有的强类型检查器相矛盾。您必须通过反射来调用它。如果类型是在运行时指定的,那么类型检查器如何知道您将调用一个现有的方法?请注意,您使用的不是编译器已知的未知类型,而是完全未知的类型。
String model = "Notification";   
Class<?> cls = Class.forName("biznea.zredzic.pojo."+model);
public class Notification extends PojoAbstract{...}
WHAT_TO_PUT_HERE po = (WHAT_TO_PUT_HERE) gson.fromJson(json.toString(), cls);
Object o = cls.cast(gson.fromJSon(json.toString(), cls));