public interface Filter<M> {
boolean match(M m);
public static <T> Collection<T> filter(Collection<T> collection, Filter<T> filter) {
return collection.stream().filter(filter::match).collect(Collectors.toList());
}
////////////////////////////////////////////////////////////////
public static void main(String[] args) {
ArrayList<Integer> intList = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8));
System.out.println(intList);
List<Integer> list = filter(intList, null);
System.out.println(list);
}
}
我正在学习java 8流媒体功能,这是我有问题的代码...
我不知道为什么参数intList
与filter()
方法不匹配。 Java应该知道这里<T>
是Integer
,对吗?
答案 0 :(得分:7)
我还不确定您为什么会收到该特定错误,但问题是您的方法声明它会返回Collection<T>
,但您正在尝试分配结果为List<T>
。如果您将filter
的声明更改为:
public static <T> List<T> filter(Collection<T> collection, Filter<T> filter)
...然后编译没有任何问题。