gpt4 book ai didi

java - 通过名称调用函数,从字符串 java 给出

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:43:32 28 4
gpt4 key购买 nike

我希望能够根据字符串提供的名称来调用函数。有点像

public void callByName(String funcName){
this.(funcName)();
}

我搜索了一些 lambda 函数,但它们不受支持。我正在考虑参加 Reflection,但我对编程有点陌生,所以我对这个主题不太熟悉。

当我开始 GUI(Swing、swt)编程和事件时,我在 java OOP 课上提出了整个问题。我发现使用 object.addActionCommand() 非常丑陋,因为我稍后需要制作一个 Switch 并捕获我想要的确切命令。

我宁愿做类似 object.attachFunction(btn1_click) 的事情,这样它会在触发事件点击时调用 btn1_click 函数。

最佳答案

Java 有方法,没有函数。区别在于方法有类;您需要知道调用该方法的类。如果它是一个实例方法,您需要一个实例来调用它,但 OTOH 它确实意味着您可以轻松查找该方法:

public void callByName(Object obj, String funcName) throws Exception {
// Ignoring any possible result
obj.getClass().getDeclaredMethod(funcName).invoke(obj);
}

请注意,这有很多的潜在异常,如果您想传入参数,事情会变得更加复杂。

如果您谈论的是类方法,则您所做的略有不同:

public void callClassByName(Class cls, String funcName) throws Exception {
// Ignoring any possible result
cls.getDeclaredMethod(funcName).invoke(null);
}

您可能还想探索使用 java.lang.reflect.Proxy .

关于java - 通过名称调用函数,从字符串 java 给出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2943054/

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