Java 如何从变量创建自定义类?(不反对)

Java 如何从变量创建自定义类?(不反对),java,oop,inheritance,Java,Oop,Inheritance,我知道我可以做到以下几点: String className = "A"; Object o= Class.forName(className).newInstance(); 但考虑这种情况(简化): 现在我想创建一个类,可以是这3种情况中的任何一种。 如果我使用上述代码并创建一个对象,我将无法调用操作方法。 我希望能够创建一个从字符串扩展父对象的对象 在我的实际案例中,我有多个不同的父类,这个类是从一个类扩展而来的,这个类是从一个类扩展而来的,大约有4层固有性。常规强制转换有效吗?由于所有类

我知道我可以做到以下几点:

String className = "A";
Object o= Class.forName(className).newInstance();

但考虑这种情况(简化):

现在我想创建一个类,可以是这3种情况中的任何一种。 如果我使用上述代码并创建一个对象,我将无法调用
操作
方法。 我希望能够创建一个从字符串扩展父对象的对象


在我的实际案例中,我有多个不同的父类,这个类是从一个类扩展而来的,这个类是从一个类扩展而来的,大约有4层固有性。常规强制转换有效吗?

由于所有类都扩展了
父类
,因此可以将
newInstance()
的结果强制转换到此类型,然后调用
父类中声明的所有方法。“正确”的实现将运行

Parent p = (Parent)Class.forName(className).newInstance();
p.action();

铸造可以工作,但没有必要。返回类型为
T
的实例,该实例是类的泛型类型。这意味着由于
Class.forName(“A”)
返回
Class
的实例,您可以将实例声明为
A
继承的
Parent
,因为
newInstance()
返回的是
A
类型的对象

Parent p = Class.forName("A").newInstance();
p.action();

您的问题是是否可以执行
ao=(A)Class.forName(className).newInstance()
Parent anyClass=(Parent)Class.forName(className).newInstance()?此代码实际上没有编译,表示找到的类型是
CAP#1
,需要我执行强制转换,但强制转换有效。
Parent p = Class.forName("A").newInstance();
p.action();