将Java类型表示为varargs

将Java类型表示为varargs,java,variadic-functions,Java,Variadic Functions,使用Java特性可以做类似的事情吗 class myClass {int i; String s;} static void myMethod(myClass... args) { ... } main() { myMethod(2,"two",3,"three"); } 您可以使用包装器类执行此操作: class MyWrapper { private int i; private String s; public MyWrapper(int _i, St

使用Java特性可以做类似的事情吗

class myClass {int i; String s;}

static void myMethod(myClass... args)
{
...
}

main()
{
   myMethod(2,"two",3,"three");
}

您可以使用包装器类执行此操作:

class MyWrapper {
    private int i;
    private String s;

    public MyWrapper(int _i, String _s) {
        i = _i;
        s = _s;
    }
}

class Test {
    static void myMethod(MyWrapper... args) {
        //do work
    }

    public static void main(String[] args) {
        myMethod(new MyWrapper(2, "two"), new MyWrapper(3, "three"));
    }
}

这是不可能的。也许您可以创建一个静态帮助器方法,使创建对象尽可能容易

static myClass mc(int i, String s) {
    return new myClass(i, s);
}

myMethod(mc(2, "two"), mc(3, "three"));

不,但您可以创建
MyClass
的构造函数并调用:

myMethod(new MyClass(2, "two"), new Myclass(3, "three"));
为简洁起见,您可以创建静态导入的factory方法:

public class MyClass {
    public MyClass create(String s, int i) {
        return new MyClass(s, i);
    }
}
和使用:

myMethod(create(2, "two"), create(3, "three"));

是的,索托夫。您需要类的构造函数

public class MyClass{
   int i
   String s;

   public MyClass(int i, String s){
      this.i = i;
      this.s = s;
   }
}

public static void myMethod(MyClass... instances){
     .....
}

public static void myMethod(Object... args){

    MyClass[] instances = new MyClass[args.length / 2];
    for (int i=0; i<args.length / 2; i++){
         instances[i] = new MyClass((Integer)args[i * 2], (String)args[(i*2) + 1]);
    }

    myMethod(instances);
}
公共类MyClass{
int i
字符串s;
公共MyClass(整数i,字符串s){
这个。i=i;
这个.s=s;
}
}
公共静态void myMethod(MyClass…实例){
.....
}
公共静态void myMethod(对象…参数){
MyClass[]实例=新的MyClass[args.length/2];

对于(int i=0;i)您的方法声明是正确的,但您在main中的方法调用不是。您正在尝试使用某种类似伪JSON的表示法。@MisterSmith先生,我想这就是问题的症结所在。:-)有时我只是等待更好的答案,而这永远不会出现。情况解决了