处理我需要根据运行时提供的类和方法的名称调用类的方法。
我可以通过哪种方式实现此目标(首选)。我可以看到的一个问题是可能存在多个具有相同名称的类,因此可能会产生问题。
任何有关如何做到最好的输入对我都有帮助
提前致谢
答案 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