您可以使用反射
样本class
package com.google.util;
class Maths {
public Integer doubleIt(Integer a) {
return a*2;
}
}
并使用类似这样的东西 -
步骤 1:- 使用给定的输入名称加载为class
String
Class<?> obj = Class.forName("Complete_ClassName_including_package");
//like:- Class obj = Class.forName("com.google.util.Maths");
步骤 2:- 使用给定名称和参数类型获取Method
Method method = obj.getMethod("NameOfMthodToInvoke", arguments);
//arguments need to be like- `java.lang.Integer.class`
//like:- Method method= obj.getMethod("doubleIt", java.lang.Integer.class);
步骤 3:- 通过传递 Object 和参数的实例invoke
Method
Object obj2 = method.invoke(obj.newInstance(), id);
//like :- method.invoke(obj.newInstance(), 45);
您也可以像这样执行步骤2
(当您不知道特定方法存在于一个您通过循环方法的数组检查所有方法时)class
Method[] methods = obj.getMethods();
Method method = null;
for(int i=0; i < methods.length(); i++) {
if(method[1].getName().equals("methodNameWeAreExpecting")) {
method = method[i];
}
}