是否有可能做到这一点:
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 和 shell 脚本语言,它们允许将所有参数作为数组检索。
给定一个像您声明它的方法,没有(简单/标准)方法可以将其检索为Object[]
.
现在,您始终可以将方法声明为
public void doSomething(Object... args) {
Object o1 = args[0]; // etc
}
然后你可以打电话
doSomething(foo);
// or
doSomething(foo, bar, baz);
但是这样做会失去所有类型的安全性;我真的不推荐它。