java - 将字符串转换为 Java 中的代码

标签 java

<分区>

Possible Duplicate:
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 语句来做这个,因为我有很多函数。

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

最佳答案

可以在这里使用反射:

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

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

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

关于java - 将字符串转换为 Java 中的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14006656/

相关文章:

java - 即使在使用 response.sendRedirect 方法后浏览器也没有显示正确的 url

java - 无法理解 Java 示例中的通配符泛型?

java - Android,日期不保存在数据库中

java - Java 有类似微软的 CHESS 的工具吗?

java - Java 11 中的 Jasperreport。java.lang.NoClassDefFoundError : Could not initialize class net. sf.jasperreports.engine.util.JRStyledTextParser

java - 使用递归比较两个字符串(不区分大小写)

java - 如何设置空白单元格的颜色

java - 初学者关于Java多线程的问题以及synchronized block 和wait()/notify()的使用

java - 如何检查该值至少等于列表中的一个字段?

java - HtmlUnit 单击具有相同名称的链接引用中的特定链接