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

Javascript java中如何将数组转换为多个变量,javascript,java,arrays,nashorn,Javascript,Java,Arrays,Nashorn,不重复问题 正如我下面所说的,我已经检查了如何在java中使用不同数量的参数。它将它们包装成一个数组,然后继续执行。但是我需要将不同数量的参数传递给函数,而不是数组,因为它将用javascript处理 我正在与Nashorn一起工作,以便用java执行一些javascript脚本。 为了便于使用,我正在尽可能地将代码模块化 我已经有了以下函数来调用javascript方法: MyClass{ .... public static Object call(ScriptObjectMirr

不重复问题

正如我下面所说的,我已经检查了如何在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);
    }
....
}
所以,我读过不同的问题,比如

它清楚地说明了这个物体。。。与对象[]相同

但是,当我在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,所以我确实需要能够获取arg并将其拆分

比如:

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函数不支持接收无限数量的参数。您可以通过
参数
关键字访问参数

请仔细阅读

例如:

函数foo(){

对于(var i=0;我是否需要在此处使用vararg?不,您不能,除非您按照建议提前知道参数的数量。@Krystian_K是的,我知道,因为它可以接收任意数量的参数arguments@Jean-BaptisteYunès有没有可能像Java这样的语言不支持从外部方法到内部方法进行完全相同的调用a(1,2,3)返回b(1,2,3)以获得任意数量的参数?答案是这是一个不错的解决方案,不完全是我想要实现的,但如果我没有找到更好的方法,它会有所帮助。谢谢!