1

我使用 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
4

2 回答 2

2

您可以使用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);
于 2013-09-26T14:57:26.523 回答
-1

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

于 2013-09-26T14:59:03.880 回答