Существует ли независимый от языка способ добавления функции в привязки сценариев JSR223?

JSR223Bindings учебный класс позволяет выставлять произвольные объекты Java на языки сценариев. Но они должны быть объектами. Я хотел бы определить функциюquit() что можно вызвать из среды сценариев, которая превращается вquitObject.run() на Яве. Но JSR223 не делаетопределить понятие функционального объекта. Существует ли независимый от языка способ сделать следующее в Javascript, а именно взять Runnable () и создать функцию в среде сценариев?

 static private Object asFunction(ScriptEngine engine, Runnable r) 
    throws ScriptException
 { 
        final Bindings bindings = engine.createBindings();
        bindings.put("r", r);
        return engine.eval(
          "(function (r) { var f = function() { r.run(); }; return f;})(r)",
          bindings);
 }

 Runnable quitObject = /* get/create a Runnable here */
 Bindings bindings = engine.createBindings();
 bindings.put("quit", asFunction(engine, quitObject));  

Благодаря встроенной поддержке Javascript для JSR223 это создаетsun.org.mozilla.javascript.internal.InterpretedFunction который делает то, что я хочу. Но это, очевидно, выигралработать в Jython или что-то еще, и яЯ хотел бы сделать этот язык независимым.

Я нея не хочу, чтобы пользователи моего скрипта набиралиquitObject.run() как'неуклюжий, а яне хочу анализировать ввод скрипта, чтобы найтиquit() как это может быть похоронено в другом коде.

Ответы на вопрос(1)

Ваш ответ на вопрос