Search code examples
javanashorn

Nashorn pass a java object to another java method


How can i pass an object as parameter to another java method via nashorn.

(e.g)

Class DummyClass{
  void method1(TestClass c){
    Sout("In DummyClass method1");
   }
}

Class B{
  void method(){
    TestClass obj = new TestClass();
    StringBuilder buffer = new StringBuilder();
    ScriptEngineManager mgr = new ScriptEngineManager();
    ScriptEngine engine = mgr.getEngineByName("nashorn");
    String className = DummyClass.class.getCanonicalName();
    buffer.append("var JavaClass  = Java.type(\"" + className + "\");");
    buffer.append("JavaClass.method1(//HOW can i pass the obj here);");
    engine.eval(buffer.toString());
}
}

Solution

  • You can expose "obj" variable in Java code as a global variable for scripts using ScriptEngine.put method [ before evaluating rest of the script ]

    engine.put("obj", obj);