java - 通过新实例访问类

标签 java

我正在使用上面的代码从一个类中创建一个新对象:

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 objmyClass 以便编译器知道它是什么类型的对象:

((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/

相关文章:

java - 为什么克隆的 HSSFCellStyle 不等于它从中克隆的样式?

java - 覆盖 spring web mvc 的默认 Hibernate Validator

java - 流口水返回最低显着性规则

java - Cursor.moveToNext 错误

java - 如何修复 'android.os.NetworkOnMainThreadException' ?

java - 无法使用 Caffeine 创建简单缓存

java - 什么是好的安全框架或 API?

java - 一个明确的字符出现在两个字符串的相同位置

Java - 对结果进行排序

java - 当我们在后台获取异常时,Tomcat 将显示特定错误的错误页面