java 函数式编程小记

stream api比较简单
函数式接口的设计 不是很好理解,记一个复杂的情况

    @FunctionalInterface
    public interface ProductSpec {
        boolean satisfy(Long p);

        // 此处的p 是satisfy的参数p
        static ProductSpec color(BigDecimal decimal) {
            return p -> p.longValue() == decimal.longValue();
        }

    }

    public void testSatisfy(ProductSpec productSpec) {
        productSpec.satisfy(111L);
    }

    public void test() {
        BigDecimal bigDecimal = new BigDecimal(12);
        // 第一种
        testSatisfy(new ProductSpec() {
            @Override
            public boolean satisfy(Long p) {
                return p.longValue() == bigDecimal.longValue();
            }
        });

        // 第二种
        testSatisfy(p -> p.longValue() == bigDecimal.longValue());

        // 第三种
        testSatisfy(ProductSpec.color(bigDecimal));
    }

如上 第三种一开始确实不好理解。。。但是代码却可以高复用,相比较简介

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,678评论 25 708
  • 很坚定的早晨,抱着不要看小说的心理,开启了读书的征程。 翻页2张后,心痒难耐,感觉即使拥有了知识也总是不圆满。这种...
    水笔仔o12530阅读 342评论 0 0
  • 好多人。
    知行合一致良知心性阅读 163评论 0 0
  • 中秋佳节,沉浸在节日的氛围中,有一刻在想今天写什么样的文章,在脑海中构思时发现,开始是之前的反思套路,当我意识到这...
    非宁静无以致远_渊宁阅读 194评论 0 0