我使用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
答案 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。