これを行うことは可能ですか:
void foo(Bar b, FooBar fb){
Object[] args=getArgs() //Contains the parameters b & fb
}
はいの場合、どのように?
(名前とパラメータの数はわかりません)
これを行うことは可能ですか:
void foo(Bar b, FooBar fb){
Object[] args=getArgs() //Contains the parameters b & fb
}
はいの場合、どのように?
(名前とパラメータの数はわかりません)
いいえ、Java は、すべてのメソッド引数を配列にパックする単純で一般的な方法をサポートしていません。これは、静的に型付けされたプログラミング言語の標準です。一般に、すべての引数を配列として取得できるのは、JavaScript やシェル スクリプト言語などの動的言語です。
宣言するようなメソッドが与えられた場合、それを として取得する (簡単/標準的な) 方法はありませんObject[]
。
これで、いつでもメソッドを次のように宣言できます。
public void doSomething(Object... args) {
Object o1 = args[0]; // etc
}
その後、あなたは呼び出すことができます
doSomething(foo);
// or
doSomething(foo, bar, baz);
しかし、このようにすると、型の安全性がすべて失われます。私は本当にそれをお勧めしません。