gpt4 book ai didi

java - 在没有已知构造函数的情况下调用动态方法?

转载 作者:行者123 更新时间:2023-12-02 08:17:07 24 4
gpt4 key购买 nike

如果我在 Java 中执行此操作以动态调用类中的方法名称,则它可以工作。

MainApp app = new MainApp();
Method meth = app.getClass().getMethod("myMethod", MyParameterType.class);
//call method
meth.invoke(app, new MyParameterType("hello"));

但这很有效,因为我知道调用方法中的构造函数。但是,如果我将 Method 对象作为参数传递给其他一些类,并且我不知道谁是构造函数,则我无法再调用该方法。即使我知道,我可能也不想创建一个不同的对象来调用该方法。例如:

//This is in the class call MainApp.java. 
//There is a method in MainApp.java that looks this way: myMethod(MyParameterType param);
MainApp app = new MainApp();
OtherClass myClass = new OtherClass();
Method meth = app.getClass().getMethod("myMethod", MyParameterType.class);
myClass.callMe(meth);

//Inside OtherClass.java
public void callMe(Method meth) {
//call method
meth.invoke(########, new MyParameterType("hello"));
}

在这种情况下,我应该为 ######## 参数输入什么?在 OtherClass.java 的上下文中,基本构造函数对象是未知的。既然 meth 已经是一种方法类型,我只需像函数一样调用,那么为什么我需要呢?

谢谢

最佳答案

假设它是一个实例方法,您必须有一个实例来调用该方法,就像其他任何东西一样。您如何获取该实例将取决于您想要做什么;您可以传入一个构造函数,或对现有对象的引用,或一些在您要求时创建实例的接口(interface)...我们无法真正为您提供有关哪种方法的任何建议在不知道您要做什么的情况下是最合适的。

如果它是静态方法,您可以为第一个参数传递null

关于java - 在没有已知构造函数的情况下调用动态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6161240/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com