У меня возник вопрос относительно ... параметров в java. Вот пример кодаИспользование ... параметров в Java
class Foo{
private void m1(Object... params){
//do something with params[0]
//do something with params[1]
//do something with params[2]
//do something with params[3]
}
public void m2(Object... params){
Object additionalParam = new Object();
m1(additionalParam, params);
}
}
class Example{
public void main(String[] args){
Foo f = new Foo();
Object o1 = new Object();
Object o2 = new Object();
Object o3 = new Object();
f.m2(o1, o2, o3);
}
}
Что-то вроде этой работы? Я не получил ошибку компилятора, но при выполнении чего-то подобного у меня были проблемы при изменении значения одного из объектов с m1()
.
РЕШЕНИЕ: Я думал, что массив будет сплющенные, но, по-видимому, не произойдет.
class Foo{
private void m1(Object... params){
//do something with params[0]
//do something with params[1][0]
//do something with params[1][1]
//do something with params[1][2]
}
public void m2(Object... params){
Object additionalParam = new Object();
m1(additionalParam, params);
}
}
class Example{
public void main(String[] args){
Foo f = new Foo();
Object o1 = new Object();
Object o2 = new Object();
Object o3 = new Object();
f.m2(o1, o2, o3);
}
}
Спасибо, Сиббо за ваш вклад.
В чем проблема? –
не будет m2 приводить к бесконечному регрессу, из-за которого он многократно называет себя все большим количеством аргументов? –
Какие проблемы? Пожалуйста, объясните больше. – Maroun