java函数调用字符串函数_从字符串java给出的名称调用函数

我希望能够根据字符串提供的名称来调用函数.就像是

public void callByName(String funcName){

this.(funcName)();

}

我已经搜索了一些lambda函数,但它们不受支持.我正在考虑去反思,但我对编程有点新意,所以我对这个主题并不熟悉.

当我开始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,reflection,events

来源: https://codeday.me/bug/20190722/1498008.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值