根据 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());
}
}
我有这样的方法:
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());
}
}