这是我的场景:
我得调用一种方法.让参数为:Parameter1,Parameter2,..,..,参数N但是要发送给方法的参数可能会在每种情况下都发生变化.
情况1:仅发送Parameter1
情况2:发送参数组合
案例3:发送所有参数
在Java中实现这一目标的最佳方法是什么?
Nic*_*olt 37
解决方案取决于问题的答案 - 所有参数是否都是相同的类型,如果是这样,每个参数将被视为相同?
如果参数不是同一类型或更重要的是不会被视为相同,那么你应该使用方法重载:
public class MyClass
{
public void doSomething(int i)
{
...
}
public void doSomething(int i, String s)
{
...
}
public void doSomething(int i, String s, boolean b)
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果每个参数都是相同的类型并且将以相同的方式处理,那么您可以在Java中使用变量args功能:
public MyClass
{
public void doSomething(int... integers)
{
for (int i : integers)
{
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
显然,当使用变量args时,您可以通过索引访问每个arg,但我建议不要这样做,因为在大多数情况下它会暗示您的设计中存在问题.同样,如果您在迭代参数时发现自己正在进行类型检查,那么您的设计需要进行审核.
Aza*_*zad 11
假设你有void方法打印许多对象;
public static void print( Object... values){
for(Object c : values){
System.out.println(c);
}
}
Run Code Online (Sandbox Code Playgroud)
上面的例子我使用vararge作为接受从0到N的值的参数.
来自评论:如果2个字符串和5个整数怎么办?
回答:
print("string1","string2",1,2,3,4,5);
Run Code Online (Sandbox Code Playgroud)
你可以使用varargs
public function yourFunction(Parameter... parameters)
Run Code Online (Sandbox Code Playgroud)
也可以看看
| 归档时间: |
|
| 查看次数: |
126529 次 |
| 最近记录: |