如何将包含所需参数的列表传递给函数

时间:2020-05-17 04:45:53

标签: java arrays

所以我有一个对象,让我们称之为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个参数的列表。

如何转换此列表以供构造函数使用?

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.