在运行时根据其名称和方法调用方法

时间:2012-01-05 10:47:37

标签: java

处理我需要根据运行时提供的类和方法的名称调用类的方法。

我可以通过哪种方式实现此目标(首选)。我可以看到的一个问题是可能存在多个具有相同名称的类,因此可能会产生问题。

任何有关如何做到最好的输入对我都有帮助

提前致谢

4 个答案:

答案 0 :(得分:3)

您必须将完全限定的类名与其包一起使用,这对于ClassLoader是唯一的。

Class clazz = Class.forName(packageAndClassName);
Method method = clazz.getDeclaredMethod(methodName, parameterTypes);

您需要知道参数类型,否则在调用时无法给出合理的值。

答案 1 :(得分:1)

答案 2 :(得分:1)

您需要使用反射:http://java.sun.com/developer/technicalArticles/ALT/Reflection/

伪代码类似于:

Get the Class object (Class.forName)
From the Class, lookup the Method you want (class.getDeclaredMethod)
Call the method (method.invoke)

答案 3 :(得分:1)

类具有可用于防止这些“具有相同名称的多个类”的限定名称。合格的名称是“com.example.ExampleClass” - 非限定名称将是“ExampleClass”。 您可以使用Class.getName();

获取限定名称

方法; 您可以查看反射(http://docs.oracle.com/javase/6/docs/api/java/lang/reflect/Method.html)。要调用该函数,请在java.lang.reflect.Method。

上使用invoke