我试图让我所有的 Java 方法都可以从 javascript 脚本中访问。
因为我想要“捷径”,所以我遵循了以下指南:https ://stackoverflow.com/a/19197130/2897090 。但是当我的 Java 方法具有可变参数时,我无法“公开”该方法以与 javascript 语言一起使用。
public void printf(String format, Object... args) {
out.printf(format, args);
}
//Gives org.mozilla.javascript.EvaluatorException: Unsupported parameter type "[Ljava.lang.Object;" in method printf
其他的:
如果我尝试printf
使用“javascript”创建“快捷方式”:
function printf(format){
java.lang.System.out.printf(format, arguments);
}
如果我输入任何内容,我会得到org.mozilla.javascript.Arguments@NNNNNN
. 如何解决?
谢谢你。
更新
由于我没有找到任何解决方案,我改变了方法:现在我只使用 ScriptEngine。实际上我正在做的是暴露整个对象(不仅仅是函数)。不幸的是,每次我需要调用一个函数时,我都需要在它前面加上我公开的对象的名称。
无论如何,我可以使用可变参数创建我的 Java 方法,并在 JavaScript 端不做任何修改地使用它们。