zoukankan      html  css  js  c++  java
  • 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。


    目录

  • 相关阅读:
    hdu 1301 Jungle Roads
    hdu 1233 还是畅通工程
    12.3日周二学习笔记
    12.2周一学习记录
    12.1周日学习记录
    浅表副本
    DL项目代码目录结构管理
    因子分析
    relu非线性映射函数,能拟合任意函数吗
    神经网络拟合连续函数
  • 原文地址:https://www.cnblogs.com/lioa/p/13540914.html
Copyright © 2011-2022 走看看