Java: получить все параметры метода в виде массива объектов
Можно ли сделать это:
void foo(Bar b, FooBar fb){
Object[] args=getArgs() //Contains the parameters b & fb
}
И если да, то как?
(Я не знаю название и количество параметров)
2 ответа
Нет, Java не поддерживает простой общий способ упаковки всех аргументов метода в массив. Это довольно стандартно для статически типизированных языков программирования. Обычно это динамические языки, такие как JavaScript и языки сценариев оболочки, которые позволяют извлекать все аргументы в виде массива.
Учитывая метод, как вы объявляете его, не существует (простой / стандартный) способ получить его как Object[]
,
Теперь вы всегда можете объявить метод как
public void doSomething(Object... args) {
Object o1 = args[0]; // etc
}
тогда вы можете позвонить
doSomething(foo);
// or
doSomething(foo, bar, baz);
но при этом вы теряете безопасность всех типов; Я не очень рекомендую это.