gpt4 book ai didi

java - 如果我将某个类的对象绑定(bind)到脚本引擎,如何从脚本引擎中将其作为该类的对象进行访问?

转载 作者:行者123 更新时间:2023-12-01 08:49:42 25 4
gpt4 key购买 nike

我希望能够通过 put() 将对象传递到 ScriptEngine 中,并能够从脚本引擎内访问其属性和方法。

例如

public class MyClass {
String getName() { return "abc"; }
}

MyClass my = new MyClass();
engine.put("abc", my);

我该怎么做?

最佳答案

这是一个使用 JavaScript 的完整工作示例。正如我在评论中提到的,您必须确保您的方法是 public

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class JavaScriptEngineSample {

public static class MyClass {
private String name;

public String getName() { return name; }
public void setName(final String name) { this.name = name; }
}

public static void main(final String[] args) throws ScriptException {
final MyClass my = new MyClass();
my.setName("Input");

final ScriptEngineManager factory = new ScriptEngineManager();

// you could also use 'javascript' here, I'm using 'nashorn' to visualize that I'm using the new Java 8 Engine
final ScriptEngine engine = factory.getEngineByName("nashorn");

engine.put("my", my);

String script = "java.lang.System.out.println(my.getName());";
script += "my.setName('Output');";

engine.eval(script);

System.out.println(my.getName());
}
}

关于java - 如果我将某个类的对象绑定(bind)到脚本引擎,如何从脚本引擎中将其作为该类的对象进行访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42465476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com