我一直在尝试使用Java中的Dungeons and Dragons战斗模拟器的一小部分。这主要是为了让我能够测试我的新知识,而我鼓励自己学习的一种方法就是推动我已经知道的事情。因此我的问题是:有没有办法在运行时执行用户输入的代码?一个例子 -
在遭遇期间,用户在“行为”字符串数组中添加额外的行(最有可能通过扫描程序)。他们补充说:
"for(Monster m : Room) if(m.getHP()>10) adventurer.attack(m);"
在'turn'期间,程序遍历'Behavior'中的每个String,执行上面的代码行。
这样的事情可能吗?如果不是,我应该在哪里看?
答案 0 :(得分:1)
是的,这是可能的。事实上,我们可以通过编程来完成所有工作。
您可以将BeanShell用于此目的。
答案 1 :(得分:0)
这可以使用JavaCompiler接口部分完成。它需要编译文件中的整个类定义。字符串作为代码是不可能的。
Java附带了可以在运行时执行代码的JavaScript引擎。
答案 2 :(得分:0)
您可以使用Nashorn引擎,它允许您在运行时执行JS脚本,因为Nashorn共享JVM,您可以从那里访问某些对象。