所以我有一个对象,让我们称之为myObject
这是我对象的构造函数
private static class myObject {
public myObject(int argA) {
this.argA = argA;
}
public myObject(int argA, boolean argB) {
this.argA = argA;
this.argB = argB;
}
public myObject(int argA, int argC, int argD) {
this.argA = argA;
this.argC = argC;
this.argD = argD;
}
public myObject(int argA, String argE) {
this.argA = argA;
this.argE = argE;
}
public int argA = 1;
public boolean argB;
public int argC = 4;
public int argD = 5;
public String argE;
现在,我想创建myObject的实例,但是我正在接收它的参数列表。例如,给我
List objectParams = Arrays.asList(1,3,4)
myObject newObjectWithTheseParameters = ?;
因此,由于其3个整数,因此应使用第3个构造函数。
我还可以获得2个参数的列表或1个参数的列表。
如何转换此列表以供构造函数使用?
答案 0 :(得分:0)
如果您始终想使用第三个构造函数(具有3个int
),则可以简单地使用以下代码:
myObject newObjectWithTheseParameters = new myObject((int) objectParams.get(0), (int) objectParams.get(1), (int) objectParams.get(2));.
否则,您将需要测试列表的结构以确定要使用的构造函数:
myObject newObjectWithTheseParameters;
if (objectParams.size() == 1)
newObjectWithTheseParameters = new myObject((int) objectParams.get(0));
else if (objectParams.size() == 2 && objectParams.get(1) instanceof Boolean)
newObjectWithTheseParameters = new myObject((int) objectParams.get(0), (boolean) objectParams.get(1));
else if (objectParams.size() == 3)
newObjectWithTheseParameters = new myObject((int) objectParams.get(0), (int) objectParams.get(1), (int) objectParams.get(2));
else if (objectParams.size() == 2 && objectParams.get(2) instanceof String)
newObjectWithTheseParameters = new myObject((int) objectParams.get(0), (String) objectParams.get(1));
else
// Handle invalid list.