gpt4 book ai didi

javascript - java中如何将数组转换为多个变量

转载 作者:行者123 更新时间:2023-12-03 04:54:22 24 4
gpt4 key购买 nike

不重复的问题

正如我向下所述,我已经检查了如何使用不同数量的参数在 java 中工作。它将它们包装到一个数组中,然后继续执行。但我需要将不同数量的参数传递给函数,不是数组,因为它将用javascript处理

<小时/>

我正在与Nashorn合作,以便在java中执行一些javascript脚本。我正在尝试尽可能模块化代码,以便易于使用。

我已经有以下函数来调用 JavaScript 方法:

MyClass{
....
public static Object call(ScriptObjectMirror ctx, String functionName, Object ...args ) {
ScriptObjectMirror caller = ctxs.get(ctx); // assume this works, it brings correct data
return caller.call(ctx, functionName, args);
}
....
}

所以,我读过不同的问题,例如 Can I pass an array as arguments to a method with variable arguments in Java?

其中明确指出 Object... 与 Object[] 相同。

但是,当我在 javascript 方面工作时,我会根据参数收到不同的内容:

假设我执行以下调用:

MyClass.call(myCtx, "a", true, false);

它将调用:

caller.call(myCtx, "a", [true, false]); //Javascript prints: [Ljava.lang.Object;@273d3dbb

但是,如果我跳过 MyClass.call 方法来直接调用 JavaScript 函数,如下所示:

caller.call(myCtx, "a", true, false); //Javascript prints true, false

因此

我可以理解 java 内部可以很好地处理 (Object... 和 Object[]) 但是 因为我使用的是 Nashorn,所以我真的需要能够获取参数并分割它们.

类似于:

public static Object call(ScriptObjectMirror ctx, String functionName, Object ...args ) {
//Pseudocode of what I want to achieve
for (arg: args) {
arg1 = arg;
arg2 = arg;
argN = arg;
}
return caller.call(ctx, functionName, arg1, arg2, ..., argN);

}

有什么办法可以实现这一点吗?/有什么解决方法吗?

注意

我不能仅仅在javascript方面假设我总是收到一个具有不同参数的数组,因为它可以从很多不同的地方调用,并且意味着要重新编码很多代码

最佳答案

您无法完全执行 Java 可以执行的操作,但您可以执行类似的操作。

Javascript函数确实支持接收无限数量的参数。您可以通过 arguments 关键字访问参数。

请阅读this .

例如:

function foo(){
for(var i=0; i<arguments.length; i++){
document.write(arguments[i] +'<br />');
}
}

foo("A", "B", "C", 1, 2, 3);

关于javascript - java中如何将数组转换为多个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42504105/

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