Java 是否可以在运行时从字符串执行代码?

Java 是否可以在运行时从字符串执行代码?,java,Java,我一直在用Java测试一个小小的龙与地下城战斗模拟器。这主要是为了让我测试我的新知识,我鼓励自己学习的一个方法就是努力学习我已经知道的知识。因此我的问题是:有没有一种方法可以在运行时执行用户输入的代码?一个例子- 在遭遇过程中,用户向字符串的“行为”数组中添加一行额外的内容(很可能是通过扫描仪)。他们补充说: "for(Monster m : Room) if(m.getHP()>10) adventurer.attack(m);" 在“轮到”期间,程序在“行为”中遍历每个字符串,执行

我一直在用Java测试一个小小的龙与地下城战斗模拟器。这主要是为了让我测试我的新知识,我鼓励自己学习的一个方法就是努力学习我已经知道的知识。因此我的问题是:有没有一种方法可以在运行时执行用户输入的代码?一个例子-

在遭遇过程中,用户向字符串的“行为”数组中添加一行额外的内容(很可能是通过扫描仪)。他们补充说:

 "for(Monster m : Room) if(m.getHP()>10) adventurer.attack(m);"
在“轮到”期间,程序在“行为”中遍历每个字符串,执行上面的代码行


这样的事情可能吗?如果不是,我应该去哪里查看呢?

这可以部分使用JavaCompiler接口来完成。它需要编译在文件中找到的整个类定义。字符串作为代码是不可能的


Java附带可以在运行时执行代码的JavaScript引擎。

您可以使用Nashorn引擎,它允许您在运行时执行JS脚本,因为Nashorn共享JVM,您可以从那里访问一些对象。

是的,这是可能的。事实上,我们几乎可以通过编程来做任何事情


您可以将其用于此目的。

Java不支持此功能。然而,也有一些基于JVM的语言,比如Groovy支持某些框架支持有限的操作集,比如。但Java中没有eval或simillar。如果要运行解释代码,请编写脚本。脚本不会被编译,而是被解释。你可以查一下纳肖恩。