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);

но при этом вы теряете безопасность всех типов; Я не очень рекомендую это.

Другие вопросы по тегам