我有一个要求,我需要在一个特定模式中从类调用方法,该模式作为输入参数获得。
public RandomMethod(String ClassName){
//Eg For Class Name Abc , there is a method AbcProcessor which i need to invoke
ClassName.ClassNameProcessor
}
由于我将参数作为String获取,我无法弄清楚如何将String转换为一种形式,我可以调用类似 Abc.AbcProcessor()
的形式我相信有一些方法可以使用反射来做到这一点。但我不知道该怎么办。
答案 0 :(得分:1)
您需要使用reflecton,确实:
public void randomMethod(String fullyQualifiedClassName, String methodName) throws ReflectiveOperationException {
Class<?> clazz = Class.forName(fullyQualifiedClassName);
clazz.getMethod(methodName).invoke(null);
}
假设您正在调用没有参数的公共静态方法
,这将起作用答案 1 :(得分:1)
通过反思,您可以这样做,请尝试以下示例:
A类:
public class A {
public void print(){
System.out.println("A");
}
}
B组:
public class B {
public void print(){
System.out.println("B");
}
}
从A和B调用print()
:
public class Test {
public static void callPrint(String className){
try {
Class clazz = Class.forName(className);
Object obj = clazz.newInstance();
clazz.getDeclaredMethod("print").invoke(obj);
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static void main(String[] args) {
callPrint("test.A");
callPrint("test.B");
}
}