加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

为什么这是错的?关于java 8流媒体

发布时间:2020-12-15 04:23:12 所属栏目:Java 来源:网络整理
导读:public interface FilterM { boolean match(M m); public static T CollectionT filter(CollectionT collection,FilterT filter) { return collection.stream().filter(filter::match).collect(Collectors.toList()); } ///////////////////////////////////
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>这是整数,对吧?

解决方法

我还不确定你为什么会遇到这个特定的错误,但问题是你的方法声明它将返回Collection< T>,但你试图将结果分配给List< T>.如果您将过滤器的声明更改为:

public static <T> List<T> filter(Collection<T> collection,Filter<T> filter)

…然后它编译没有问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读