可能重复:
How do I invoke a java method when given the method name as a string?
How do I programmatically compile and instantiate a Java class?
我有一个功能:
fun1() {
System.out.print("hello");
}
我想从用户或文件中读取字符串,如果出现字符串"fun1()"
,我会调用fun1。
我不想用switch语句执行此操作,因为我有很多函数。
有什么方法可以使用字符串调用函数吗?
答案 0 :(得分:5)
你可以在这里使用反射:
Method method = MyClass.class.getDeclaredMethod("fun1", new Class[] {});
method.invoke(this, null);
首先考虑一下,如果你可以避免使用反射,那么就这样做。反射带来了许多缺点,例如难以调试和渲染自动重构工具(例如Eclipse中的那些工具)实际上没用。
重新思考你的设计;你可以通过更清晰的类分解,更好的多态性等来更好地解决问题。
答案 1 :(得分:1)
您可以使用Java Reflection
实现此目的答案 2 :(得分:1)
你可以用反射做到这一点。但是你提供的方法不是java。返回类型丢失。你为什么要这样做?这是一个链接,以防你走这条路线:invoking a static method using reflections