Java ScriptEngine - 在java类中创建动态变量

时间:2013-09-26 14:53:16

标签: java javascript-engine

我使用java ScriptEngine来执行可以改变共享Java类的脚本。我想知道,如果可以在java类中支持动态创建的变量吗?

// create a script engine manager
ScriptEngineManager factory = new ScriptEngineManager();

// create a JavaScript engine
ScriptEngine engine = factory.getEngineByName("JavaScript"); 
engine.put("javaclass", jClass);

engine.eval("javaclass.propertyThatDoesNotExist = 'test'"); // throws exception

2 个答案:

答案 0 :(得分:0)

您可以使用ScriptEngine#put(String key, Object value)方法在引擎中注册 javascript变量。例如:

engine.put("i", 10);

这是如何检索注册变量的:

int i = ((Double) engine.eval("i")).intValue();
System.out.println("JavaScript variable in Java; i = " + i);

答案 1 :(得分:0)

Java不是一种动态语言。因此,您无法向该类/对象添加属性/变量。为此,您需要使用不同的语言,如Groovy或Java Script。