【发布时间】:2012-09-10 18:58:33
【问题描述】:
我有两个类 A 和 B。A 有一个方法,比如 foo,它可以有任意数量的任意类型的参数。该方法将这些参数传递给具有预定数量的预定类型参数的方法。
Class A{
foo(<?> ... params){
(new B()).bar(params);
}
}
Class B{
bar(int a, int b){
Log.v("The params passed are "+a+" and "+b);
}
}
Class Caller{
callingMethod(){
(new A()).foo(1, 2);
}
}
我知道编译器不允许我为 foo 写下的签名;我写它只是为了解释我想要实现的目标。
我不想在 B 类的 bar(int, int) 中进行任何转换。
【问题讨论】:
-
有人可能会争辩说,如果您在 Java 方法中需要这种开放式方法参数,您可能做错了什么。该语言实际上不允许这样做,在您的示例中,这种间接性似乎没有意义。
-
我要避免的是使用 Bundle (/HashMap),在这种情况下,callingMethod 必须知道其内容。此外,对于可以推送到 Bundle 的内容没有任何限制。这种“Bundle 方法”是用于 Android 中 Activity 的生命周期回调方法 (savedInstanceState)。
标签: java parameter-passing anonymous-types optional-parameters