我正在尝试编写一个函数,该函数需要一些字符串并对其执行某些操作。

我要做的唯一一件事就是字符串集遍历它们。现在,我最终遇到了一个尴尬的构想:

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

public void foo(Iterable<String> myStrings){
    for(String i : myStrings){
        bar(i);
    }
}

从那以来感觉多余
for(String i : myStrings){
    bar(i);
}

对于类型为String []的myStrings而言,将是完全有效的代码。

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

最佳答案

参见Why is an array not assignable to Iterable?

简短的回答:不。据我了解,数组类型是合成代码,因此不实现Iterable或任何其他类型。您需要提供一种重载方法或要求客户端在调用站点上调用Arrays.asList

09-19 14:50