重载可选的数组支持 - Java

时间:2013-07-24 05:50:29

标签: java overloading

有没有办法让这段代码更简洁,以免有这么多重载的方法?

public void method(String[] args1, String[] args2){}
public void method(String[] args1, String args2){}
public void method(String args1, String[] args2){}
public void method(String args1, String args2){}

随着参数数量的增加,重载方法的数量呈指数增长。这显然是一个问题,我知道必须有一个更简单的方法来做到这一点。

目标是找到将任意数量的相同类型的对象作为参数传递的最佳方法,而不使用数组进行单个对象输入。

为什么呢?这对于最终程序员来说非常简单。

4 个答案:

答案 0 :(得分:1)

也许如果你有大量的论点 - 除了 - 将来可以增加,最好将它们全部包装在单独的类中,即InputParams,并且只将该类的一个实例传递给该方法。考虑下一个代码:

InputParam ip = new InputParam();
ip.setField1(field1);
//...
// usage
this.method(ip);

// declaration
public void method(InputParams arg){}

P.S。但是,正如其他人提到的那样,这实际上取决于许多条件和你正在努力实现的目标。

答案 1 :(得分:0)

基本上你想用public void method(String[] args1, String[] args2){}作为你的主要方法,而其他人只是让程序员更容易?您可以简单地删除其他人或仍然实现它们:

public void method(String args1, String args2){
    this.method(new String[]{args1}, new String[]{args2});
}

在这种情况下,您只需要实现public void method(String[] args1, String[] args2){}

的代码

答案 2 :(得分:0)

Java中的

变量参数 varargs 允许您编写更灵活的方法,可以根据需要接受任意数量的参数。这些功能可以编写采用可变长度参数的方法/函数。

public static void main(String args[]) 
{
        test("India");
        test("India", "Delhi");
        test("United States", "New York", "California");
}

public static void test(String... args) 
{
        for(String arg: args) 
        {
            System.out.print(arg+"  ");
        }
}

答案 3 :(得分:0)

我们可以通过获取所有4种类型的参数和我们不想发送的参数来创建方法,我们可以将其作为null发送。在接收方法中,我们可以根据需要编写一些逻辑。

输入:u1.method(null,s3,s1,s4);此处u1是类对象并调用其方法

public static void method(String[] args1, String[] args2,String s1, String s2)
{
   System.out.println(s1);
}