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