将数组写为参数Java

Sor*_* D. 1 java arrays parameters casting parameter-passing

我希望能够直接编写一个数组作为我的方法的参数,而不是将数组值存储在一个单独的变量中.

例:

public void myMethod(myObject[] objParam, String[] strParam, Integer[] intParam) {
    // do stuff
}
Run Code Online (Sandbox Code Playgroud)

我想调用这样的方法:

myMethod({obj1, obj2}, {"string1","string2"}, {123,456});
Run Code Online (Sandbox Code Playgroud)

目前这在我的IDE中是不可接受的,我尝试过不同的表示法,甚至可以转换为数组,但是没有任何作用.

我不想每次需要使用我的方法时都为每个参数声明和启动一个数组.

有谁知道一个很好的解决方法吗?使用List解决方案?

编辑:参数类型是固定的,对于3个参数中的每一个,数组值将对应1比1.

xs0*_*xs0 5

我能想到的最短的方法就是准备一个这样的课程:

public class ArrUtil {
    public static Integer[] arr(Integer... elements) {
        return elements;
    }

    public static String[] arr(String... elements) {
        return elements;
    }

    public static myObject[] arr(myObject... elements) {
        return elements;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以静态导入arr:

import static ArrUtil.*;
Run Code Online (Sandbox Code Playgroud)

并像这样使用它:

myMethod(arr(obj1, obj2), arr("abc", "Def"), arr(1, 2));
Run Code Online (Sandbox Code Playgroud)

编辑:你说这些值是相关的.一个更清洁的解决方案是声明一个容器类:

class Foo {
    final myObject obj;
    final String str;
    final int num;

    Foo(myObject obj, String str, int num) {
        this.obj = obj;
        this.str = str;
        this.num = num;
    }

    static Foo Foo(myObject obj, String str, int num) {
        return new Foo(obj, str, num);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以采用varargs参数:

void myMethod(Foo... foos) {
}
Run Code Online (Sandbox Code Playgroud)

并称之为

myMethod(Foo(obj1, "abc", 123), Foo(obj2, "def", 234)) 
Run Code Online (Sandbox Code Playgroud)