7

可能重复:
当将方法名称作为字符串给出时,如何调用 java 方法?
如何以编程方式编译和实例化 Java 类?

我有一个功能:

fun1() {
  System.out.print("hello");
}

我想从用户或文件中读取字符串,如果字符串"fun1()"出现,我会调用 fun1.

我不想用 switch 语句来做这件事,因为我有很多功能。

有什么方法可以使用字符串调用函数?

4

3 回答 3

5

可以在这里使用反射:

Method method = MyClass.class.getDeclaredMethod("fun1", new Class[] {});
method.invoke(this, null);

但是,首先考虑一下,如果你可以避免使用反射,那么就这样做。反射带来了许多缺点,例如难以调试和使自动重构工具(例如 Eclipse 中的那些工具)实际上毫无用处。

重新思考你的设计;您可能可以通过更清晰的类分解、更好的多态性等更好地解决问题。

于 2012-12-22T21:20:03.637 回答
1

您可以使用Java 反射来实现这一点

于 2012-12-22T21:18:39.650 回答
1

你可以使用反射来做到这一点。但是您提供的方法不是java。缺少返回类型。你为什么要这样做?这是一个链接,以防您走这条路:使用反射调用静态方法

于 2012-12-22T21:19:16.070 回答