java字符串调用函数参数_java – 在类中调用已知函数(带参数),其名称由字符串变量定义...

我有一堆各种名称的类,每个类都有一个performLogic函数,它接受许多预设参数(总是相同的):

public final class DoSomeAction extends SetupAction {

public void performLogic(param1, param2...

我想要一种可以这样称呼的方式:

String actionName = "DoSomeAction";

actionName.performLogic(param1, param2...);

希望这清楚我要做的事情.

感谢您的反馈并指向我class.forName()

经过一些进一步的研究后,我能够实现以下内容:

try {

Class actionClass = Class.forName(blockAction);

Object obj = actionClass.newInstance();

Class[] parameterTypes = new Class[2];

parameterTypes[0] = String.class;

parameterTypes[1] = String.class;

Method performLogic = actionClass.getDeclaredMethod("performLogic", parameterTypes);

performLogic.invoke(obj, param1, param2);

}

catch(ClassNotFoundException e) {

cat.error("Class not found: " + e.toString());

}

最佳答案 你可以使用Reflection

Object action = ???; // perhaps you need .newInstance() for action class

// Hopefully you have a interface with performLogic

String methodName = "performLogic";

try {

Method method = action.getClass().getMethod(methodName, param1.class, param2.class);

method.invoke(action, param1, param2);

} catch (SecurityException | NoSuchMethodException e) {

// Error by get Method

} catch (IllegalArgumentException | IllegalAccessException | InvocationTargetException e) {

// Error by call Method

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值