让java函数接受集合或数组

Bos*_*ohn 11 java arrays collections function-declaration

我正在尝试编写一个函数,它接受一些字符串并对它们做一些事情.

我要做的唯一事情是字符串集循环遍历它们.现在,我最终得到了一条笨拙的构造

public void foo(String[] myStrings){
    foo(java.util.Arrays.asList(myStrings));
}

public void foo(Iterable<String> myStrings){
    for(String i : myStrings){
        bar(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

从那以后感到多余

for(String i : myStrings){
    bar(i);
}
Run Code Online (Sandbox Code Playgroud)

对于String []类型的myStrings来说,它将是完全有效的代码.

是否有一个我可以接受foo的类,它将允许集合和数组?

Tom*_*m G 10

请参阅为什么数组不能分配给Iterable?

简答:不.数据类型是合成代码,据我所知,因此不实现Iterable或任何其他类型.您需要提供重载方法或要求客户端Arrays.asList在呼叫站点呼叫.

  • 谢谢,我想我仍在努力说服java,它深深地是python。 (2认同)
  • 哈哈,这里没有鸭子打字——抱歉。:) (2认同)
  • 欢迎来到详细打字的世界.Java基于WET而不是DRY的原则(如写入一切两次而不是不重复自己). (2认同)