我正在使用上面的代码从一个类中创建一个新对象:
Object obj = Class.forName("myClass").newInstance()
但由于某些原因,我无法使用 var obj 来执行方法或从类“myClass”获取变量,如下所示:
obj.methodFromMyClass();
这样做的目的是通过另一个类的参数从类“myClass”动态创建一个对象。
A 级
public A () {
B b = new B("myClass");
}
B 级
public B ( String className ) {
Object obj = Class.forName( className ).newInstance();
obj.methodFromMyClass();
}
类(class) myClass
public void methodFromMyClass () {
// Some code
}
因此 B 类应该像桥一样工作,从指定的类的参数创建对象。
欢迎任何提示。
最佳答案
您需要cast obj
到 myClass
以便编译器知道它是什么类型的对象:
((myClass) obj).methodFromMyClass();
如果您打算在 obj
上重复使用 myClass
中的方法,您可能希望将它分配给一个显式声明该类的新变量:
myClass myObj = (myClass) myObj;
myObj.aMethodFromMyClass();
myObj.anotherMethodFromMyClass();
如果你在编译时不知道obj
的类型,你可能需要使用reflection调用 methodFromMyClass
,例如
obj.getClass().getMethod("methodFromMyClass", new Object[0]).invoke(obj);
关于java - 通过新实例访问类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30452920/