将String转换为Java中的代码

时间:2012-12-22 21:16:02

标签: java

  

可能重复:
  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语句执行此操作,因为我有很多函数。

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

3 个答案:

答案 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