根据 JAVA 中的方法参数动态创建对象列表

create a list of objects dynamically depending on method parameters in JAVA

我有这样的方法:

  private objects;

  public generate(ArrayList<Object> objects) {
        this.objects = objects;
    }

所以要调用它,我需要先生成一个对象列表,然后将其传递给方法

ArrayList<Object> o;
o.add(new Object a());
o.add(new Object b());

generate(o);

有没有办法调用我的“生成”方法,将所有对象作为属性传递到那里,而与参数的数量无关?喜欢

generate(new Object a(), new Object b(), .. .etc )

谢谢!

是的。

public void generate(Object... objects) {
   for (Object myObject : objects) {
       myObjectsArrayList.add(myObject);
   }
}


generate(new Object a(), new Object b());

您可以使用可变参数

private List<Object> objects;

public void generate(Object... objects) {
    this.objects = Arrays.asList(objects);
}

只需修改您的 generate 方法以使用 vararg 参数(可变参数):

    public void generate(Object... objects) {
        this.objects = Arrays.asList(objects);
    }

引用文档,可以找到here:

In past releases, a method that took an arbitrary number of values required you to create an array and put the values into the array prior to invoking the method.

幸运的是,这不再是必需的。这是一个完整的例子:

public class MyObjects {
    private List<Object> objects;

    public void generate(Object... objects) {
        this.objects = Arrays.asList(objects);
    }

    public static void main(String[] args) {
        MyObjects h = new MyObjects();

        h.generate(new Object());
        h.generate(new Object(), new Object());
        h.generate(new Object(), new Object(), new Object());

    }
}