收集方法参数?

时间:2015-03-06 08:34:18

标签: java methods collections parameters

我们有一个方法:

public void foo (String s1, String s2, String s3) { 
    ...
}

并选择一个集合。也许hashmap,也许是列表,并不重要。

有没有办法将“转换”集合转换为方法参数?类似的东西:

public void foo (getParamters(map)) { ... }

是的,当然我可以做到

public void foo (map.get(0), map.get(1), map.get(3)) { ... }

但我正在考虑更自动化的东西,这可以帮助我解决更大的问题。

3 个答案:

答案 0 :(得分:5)

您可以将Collection转换为数组并将数组传递给方法:

public void foo (String... s) { 
    ...
}

...

String[] arr = map.keySet().toArray (new String[0]);
foo (arr);

由于您事先并不知道Collection中的元素数量,因此使用varargs声明方法比foo (String s1, String s2, String s3)中的固定数量的参数更有意义。

答案 1 :(得分:1)

您可以使用varargs例如:

public static void main(String[] args) {
    test("1", "2");
    test("1", "2", "3");

}

public static void test(String ...args){
    for (int i = 0; i < args.length; i++) {
        //do something
    }
}

答案 2 :(得分:0)

您可以使用varargs,它允许该方法接受零个或多个参数。如果我们不知道我们将在方法中传递多少参数,那么varargs是更好的方法。

<强>语法:

return_type method_name(data_type... variableName){
  // code snippet
}

示例:

public void varargsMethod(String... values){          
    for(String s:values){  
       System.out.println(s);  
    }  
}

正在运行example