根据JAVA中的方法属性动态创建对象列表

时间:2015-03-02 12:06:52

标签: java variadic-functions

我所拥有的是一种像这样的方法:

  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);

有没有办法打电话给我的&#34;生成&#34;传递所有对象作为属性的方法,与属性的数量无关?像

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

谢谢!

3 个答案:

答案 0 :(得分:4)

您可以使用varargs

private List<Object> objects;

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

答案 1 :(得分:2)

是。

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


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

答案 2 :(得分:1)

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

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

从文档中引用,可以找到here

  

在以前的版本中,采用任意数量值的方法需要您创建数组并在调用方法之前将值放入数组中。

幸运的是,这已经不再需要了。这是一个完整的例子:

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());

    }
}