我正在尝试用 Java 编写我自己的“功能性”小库。如果我有这个功能:
public static <T> List<T> filter(Iterable<T> source,BooleanTest predicate)
{
List<T> results = new ArrayList<T>();
for(T t : source)
{
if(predicate.ok(t))
results.add(t);
}
return results;
}
为什么我不能将它与此代码片段一起使用:
String strings[] = {"one","two","three"};
List<String> containingO = IterableFuncs.filter(strings,new BooleanTest() {
public boolean ok(String obj) {
return obj.indexOf("o") != -1;
}
});
据我所知,Java 数组实现了 Iterable,对吧?需要更改哪些内容才能使该函数适用于数组和集合?通过选择 Iterable 作为第一个参数,我认为我涵盖了所有情况。
最佳答案
不幸的是,数组没有实现 Java 中的任何接口(interface)。 enhanced for loop分别处理数组和可迭代对象。
但是,您可以使用 Arrays.asList(T...)
将数组包装在 List<T>
中这是可迭代的。
就“功能库”方面而言,您可能应该看看 Google Collections其中有很多类似的东西。
关于java - 为什么我不能将 String 数组与采用 Iterable 作为参数的方法一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2044820/