我刚刚开始学习反思,为此我有一个小的数学应用程序。该程序包装了一个逻辑类,并在运行时查看它为方法包装的逻辑类(在本例中为加法、减法、乘法和除法)。这些方法如下所示。
public int add(int... args){
int result = 0;
for(int i=0;i<args.length;i++){
result+=args[i];
}
return result;
}
如您所见,此方法(所有其他方法也一样)采用 int... args,因此我可以传入任意数量的 int 以相加。
然后我尝试像这样解决数学问题
int[] params = new int[numinputs];
//populate params with what numbers the user types in.
int result = (Integer) methodToCall.invoke(logicInstance, params);
如果我这样调用它,我会在调用()上得到一个 IllegalArguementException。
所以我猜 tl:dr 是:
如果被调用的方法采用参数而不是硬编码的参数数量,我如何调用invoke()。
谢谢 :)