gpt4 book ai didi

java - 通过椭圆运算符将可变数量的参数转发到接受可变数量参数的函数

转载 作者:行者123 更新时间:2023-12-01 17:05:53 25 4
gpt4 key购买 nike

简而言之,我有一个接受可变数量参数的函数和另一个也接受可变数量参数的函数,我需要将方法中的所有可变参数以及一些额外的参数转发到接受变量的第二个方法参数...

action1(new Filter1());
action2(new Filter1(), new Filter2());

public void action1(Object ... params){
actionGeneric(new Action1(), params);
}

public void action2(Object ... params){
actionGeneric(new Action2(), params);
}

public void actionGeneric(Object ... params){
for (Object param : params){
if (param instanceof Action1){
// works fine
} else if (param instanceof Action2){
// works fine
} else if (param instanceof Filter1){
// never gets here
} else if (param instanceof Filter2){
// never gets here
}
}
}

所以我的问题是,我应该如何在action1/action2中转发这些参数,以便actionGeneric将它们视为Filter1/Filter2实例而不是(我猜测)数组类型?

最佳答案

action2() 方法中,您可以使用两个参数调用 actionGeneric() 方法:new Action2() params (后者是一个对象数组)。因此,从 actionGeneric() 方法的角度来看,某些参数的类型为 Action2,但不是 Filter1。我认为,解决方案是创建一个新数组,然后将其传递给 actionGeneric() 方法,按照...

Object[] newParams = new Object[params.length + 1];
newParams[0] = new Action1();
System.arraycopy(params, 0, newParams, 1, params.length);
actionGeneric(newParams);

关于java - 通过椭圆运算符将可变数量的参数转发到接受可变数量参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25599835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com