Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将包含所需参数的列表传递给函数_Java_Arrays - Fatal编程技术网

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

Java 如何将包含所需参数的列表传递给函数,java,arrays,Java,Arrays,我有一个对象,我们称它为myObject 下面是我的对象的构造函数 私有静态类myObject{ 公共myObject(int argA){ this.argA=argA; } 公共myObject(int argA、布尔argB){ this.argA=argA; this.argB=argB; } 公共myObject(int argA、int argC、int argD){ this.argA=argA; this.argC=argC; this.argD=argD; } 公共myObje

我有一个对象,我们称它为myObject

下面是我的对象的构造函数

私有静态类myObject{
公共myObject(int argA){
this.argA=argA;
}
公共myObject(int argA、布尔argB){
this.argA=argA;
this.argB=argB;
}
公共myObject(int argA、int argC、int argD){
this.argA=argA;
this.argC=argC;
this.argD=argD;
}
公共myObject(整数argA,字符串argE){
this.argA=argA;
this.argE=argE;
}
公共整数argA=1;
公共布尔argB;
公共整数argC=4;
公共整数argD=5;
公共字符串argE;
现在我想创建myObject的一个实例,但我收到了它的参数列表

List objectParams=Arrays.asList(1,3,4)
myObject newObjectWithTheseParameters=?;
所以这应该使用第三个构造函数,因为它有3个整数

我还可以得到一个包含2个参数或1个参数的列表


如何将此列表转换为我的构造函数所采用的格式?

如果您总是想使用第三个构造函数(使用3
int
s),您可以简单地使用以下格式:

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.

如果您总是想使用第三个构造函数(使用3
int
s),您可以简单地使用以下内容:

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.

您的列表是否总是有3个
int
s?(即,它是否总是使用第三个构造函数?)否,列表中可以有任意数量的元素。(它可以使用第1个、第2个、第3个……构造函数)我只是不知道如何将这个列表清晰地传递到我的构造函数中。你所要求的似乎与python的元组解包非常相似,但这在Java中并不存在。从理论上讲,可以将其组合在一起,但重新构造代码会更清晰。你要求的是这个特定的
h这个特定的构造函数列表?或者你是在要求使用不同构造函数的
es的代码吗?我建议使用一个具有特定顺序的构造函数,类似于该方法的工作方式。你的列表是否总是有3个
int
s?(即,它是否总是使用第三个构造函数?)不,列表中可以有任意数量的元素。(可以使用第一、第二、第三……构造函数)我只是不知道如何将这个列表清晰地传递到我的构造函数中。你所要求的似乎与python的元组解包非常相似,但这在Java中并不存在。从理论上讲,可以将其组合在一起,但重新构造代码会更清晰。你要求的是这个特定的
h这个特定的构造函数列表?或者你是在要求使用不同构造函数的
es的代码吗?我建议使用一个具有特定顺序的构造函数,类似于该方法的工作方式。我理解,谢谢。所以我有许多构造函数覆盖定义的某些默认值。是否有将所有这些转换为1个构造函数的任何方法?最好的方法是使用一个生成器吗?但是这会使代码库增加很多,因为我需要调用这个构造函数约100次,它从一个简单的1行程序转换为一个构建方法call@PLfan666很抱歉延迟响应。您可以让构造器将列表作为段落接受在构造函数中计算并移动if语句。然后,将每个构造函数中已有的任何代码移动或复制到其各自的if语句中。然而,不幸的是,这不允许根据输入类型调用不同的超级构造函数或委托给不同的构造函数,因为这必须是第一步您的构造函数的t语句。我理解,谢谢。所以我有许多构造函数覆盖了定义的某些默认值。有没有办法将所有这些都转换为1个构造函数?最好的方法是使用一个构造函数吗?但是这会使代码库增加很多,因为我需要调用此构造函数约100次,然后它就会变为from构建方法的简单1行程序call@PLfan666抱歉,响应延迟。您可以让构造函数接受列表作为参数,并将if语句移动到构造函数中。然后,将每个构造函数中已有的任何代码移动或复制到其各自的if语句中。但是,很遗憾,这并没有实现根据输入类型,您可以调用不同的超构造函数或委托给不同的构造函数,因为这必须是构造函数的第一条语句。