潜在的に疑わしい質問ですが、ここでそれについての直接のドキュメントを見つけることができませんでした。toStringメソッドをnashornのjsオブジェクトに公開
Javaの "コンストラクタ"をJS側に公開したい場合は、インスタンス化する際に "toString"メソッドを使用してインスタンスを作成する必要があります。
// java class
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import jdk.nashorn.api.scripting.AbstractJSObject;
public class Foo extends AbstractJSObject {
String bar;
public Foo() {
super();
}
public Foo(String b) {
super();
this.bar = b;
}
@Override
public Object newObject(Object... args) {
String bar = null;
if (args[0] != null) bar = args[0].toString();
Foo f = new Foo(bar);
return f;
}
@Override
public String toString() {
return "Foo: " + this.bar;
}
public static void main(String[] args) {
ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
engine.put("foo", new Foo());
// f.toString however is null
engine.eval("var f = new foo('hi'); f.toString();")
}
}
あなたは現在これを実行していないコードをしていますか?あなたが概説したタスクで現在あなたが抱えている問題は何ですか? –
@ PeterDavidCarter-Poulsenそうではありません。 toStringは新しいfoo(...)のインスタンスではnull –