java - (JavaFX) 如何在构造函数和initialize()之间调用类的方法?

标签 java reflection javafx interface fxml

我有一个实现接口(interface)的类。从我的基类中,我创建了一个实现类的实例,如下所示:

Class newTab;
TransactionTabInterface tabInterface = null;
try {
  newTab = Class.forName("[package] + title);
  tabInterface = (TransactionTabInterface) newTab.newInstance();
  tabInterface.setRootController(this);
} catch (Exception e) {
   e.printStackTrace();
}

这是必要的,因为我不知道需要实例化的类的名称(title 在其他地方确定)。

我遇到的问题是,在新类中,我需要立即访问rootController。我在类中有一个方法,允许我传递 rootController 引用,如上面的代码所示。

通常,我会在实例化类时将 rootController 传递给构造函数,但我不知道如何在 newInstance() 中将参数传递给构造函数上面调用。

编辑:需要明确的是,上面的代码位于我的主类中,用于实例化新的 FXML Controller (newTab)。

最佳答案

在您的newTab上您可以调用的对象 getConstructor(Class<?>...)与构造函数的类型一起获取对具有所需参数的构造函数的引用。

然后就可以调用这个构造函数的 newInstance(Object...)使用参数调用构造函数的方法。

关于java - (JavaFX) 如何在构造函数和initialize()之间调用类的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38776386/

相关文章:

java - 带有 @RunWith(SpringJUnit4ClassRunner.class) 的配置文件

java - 配置 MysqlConnectionPoolDataSource (Java) 时必须设置哪些配置属性?

java - 使用反射创建新对象?

java - 如何确定 Java 字段是否具有 transient 修饰符?

java - 按下按钮时如何自动调用 EventHandler<ActionEvent>?

java - 抛出异常还是阻止它?

c# - 在 C# 中使用 "Type"对象类型转换对象

javafx - 如何在 JavaFX 中使用节点类的 intersect() 方法?

VSCode 中的 JavaFX-11 : Error: Could not find or load main class Files\Java\javafx-sdk-11. 0.2\lib

java - Hibernate 5 - 不推荐使用 createCriteria