2013-07-24 31 views
0

有没有什么办法可以使这段代码更加简洁以免有太多的重载方法?重载可选阵列支持 - Java

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){} 

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

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

为什么?这是为了最终程序员的简单。

+2

我们不知道你想什么来实现的,这使得它很难帮你...你能澄清问题? –

+0

好的。现在你有什么问题? –

+0

不是'公开无效方法(T ... args)'你在找什么? –

回答

1

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

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

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

P.S.但是,正如其他人提到的那样,这取决于很多条件以及你想要达到的目标。

+0

+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){}

0

可变参数可变参数在Java允许你写出更灵活的方法,可以接受尽可能多的论点,因为你需要。这些功能使得能够编写采用可变长度参数的方法/函数。

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+" "); 
     } 
} 
+0

但是,可变参数只能在参数列表的末尾。 –

0

我们可以创建通过采取所有4种类型的参数,我们不希望发送参数的方法,我们可以把它作为空。在按照要求的接收方法中,我们可以编写一些逻辑。

输入:u1.method(null,s3,s1,s4);这里u1是类对象,并调用它的方法

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