• lambda之函数式接口


    概念

      函数式接口,即适用于函数式编程场景的接口。而java中的函数式编程体现就是Lambda,所以函数式接口就是可以适用于Lambda使用的接口。只有确保接口中有且仅有一个抽象方法,Java中的Lambda才能顺利地进行推导。

    代码示例

    package liojx.kn.fnI;
    
    
    
    /**
     * 创建订单的接口
     */
    @FunctionalInterface // 表明这个接口属于函数式接口,一个接口中仅一个方法,当然静态方法、Object方法、default方法除外
    public interface CreateOrder {
    
        /**
         * 创建订单信息
         * @param info          创建订单的参数
         * @return              返回订单信息
         */
        Order createOrder(String info);
    
        /**
         * 当我欲再创建一个抽象方法的时候,
         * @FunctionalInterface 会红色波浪线提示错误:Multiple non-overriding abstract methods
         * found in interface liojx.kn.fnI.CreateOrder
         * 意为:有多个非重写的抽象方法
         * 注释
         */
    //    Order getOrderById(Long id);
    
        /**
         * 而重写Object的toString方法是可以通过函数式接口验证的
         * @return
         */
        @Override
        String toString();
    
        /**
         * default方法也可
         * 每一个实现订单创建的接口,都可以获得,订单商品的统一商家
         */
        default String getFactory() {
            return "侏罗纪恐龙制造公司";
        }
    
        /**
         * 静态方法也可以通过验证
         * 每一个实现订单创建的接口,都可以获得订单商品销售总监的联系方式
         */
        static String getSalesmanPhone() {
            return "13888888888";
        }
    
    }

    常用的函数式接口

    • Supplier 
    • Consumer
    • Function
    • Predicate
    • UnaryOperator
    • BinaryOperator

    而这些重要的函数式接口,都定义在标准的rt.jar库里面。路径为:java.util.function。


    目录

  • 相关阅读:
    O(1)时间复杂度实现入栈、出栈、获得栈中最小元素、获得栈中最大元素(转)
    北京网选赛第二题(最大仰望角度)
    最小圆覆盖(随机增量法&模拟退火法)
    模拟退火算法A Star not a Tree?(poj2420)
    模拟退火算法(run away poj1379)
    模拟退火算法(西安网选赛hdu5017)
    最小费用流判负环消圈算法(poj2175)
    中国邮递员问题(一)
    破坏行动问题
    进化树问题
  • 原文地址:https://www.cnblogs.com/lioa/p/13540914.html
Copyright © 2020-2023  润新知