zoukankan      html  css  js  c++  java
  • Java --Lamda表达式

    Lamda:属于函数式编程的概念;

    interface IMessage {
        public void print() ;
    }
    public class TestDemo {
        public static void main(String [] args) {
            fun(new IMessage() {
                public void print() {
                    System.out.println("Hello,World!") ;
                }
            }) ;
        }
        public static void fun(IMessage msg) {
            msg.print() ;
        }
    }

        上例代码为 匿名内部类 的运用;然而实际上在整个代码中,最终需要的只有一个输出操作,但由于Java的开发结构要求,不得不在核心的输出语句上嵌套更多内容;为了简化类似上例代码,JDK1.8引用了 函数式的编程 可以使用Lamda表达式。

    interface IMessage {
        public void print() ;
    }
    public class TestDemo {
        public static void main(String [] args) {
            fun( ()->System.out.println("Hello,World!") ) ; // Lamda表达式
            // 
        }
        public static void fun(IMessage msg) {
            msg.print() ;
        }
    }

    在整个代码的操作中,匿名内部类只进行一行语句的输出,所以此时使用了Lamda表达式实现需求。

    对于Lamda语法主要有三种形式:

      1 — (参数) -> 单行语句

      2 — (参数) -> {多行语句}

      3 — (参数) -> 表达式

    观察代码:

    interface IMessage {
        public void print( String str ) ;
    }
    public class TestDemo {
        public static void main(String [] args) {
            // 首先要定义此处表达式需要接收的变量
            fun( (s)->System.out.println(s) ) ; // Lamda 有参语法
            // 
        }
        public static void fun(IMessage msg) {
            msg.print("Hello World!") ;  //设置参数的内容
        }
    }
    interface IMessage {
        public void print( String str ) ;
    }
    public class TestDemo {
        public static void main(String [] args) {
            // 定义Lamda有参多行语法
            fun( (s)->{
                s = s.toUpperCase() ;
                System.out.println(s) ;
            } ) ; 
        }
        public static void fun(IMessage msg) {
            msg.print("Hello World!") ;  //设置参数的内容
        }
    }
    interface IMessage {
        public void add( int x , int y ) ;
    }
    public class TestDemo {
        public static void main(String [] args) {
            // 定义Lamda有参表达式语法
            fun( (s1,s2) -> { return s1+s2 ;} ) ; 
        }
        public static void fun(IMessage msg) {
            System.out.println(msg.add(10,20)) ;
        }
    }

    ————————————

    总结:

      利用Lamda表达式最终解决的问题是:避免了匿名内部类内定义过多无用的操作。

    ~~~~~

  • 相关阅读:
    面试基础知识文档
    敏捷式开发
    redis总结
    自我介绍的问题
    面试2
    唐巧的iOS技术博客选摘
    IOS开发中滑动页面时NSTimer停止的问题
    iOS多线程GCD(转)
    iOS 用instancetype代替id作返回类型有什么好处?
    C语言中全局变量、局部变量、静态全局变量、静态局部变量的区别 (转)
  • 原文地址:https://www.cnblogs.com/wangyuyang1016/p/10924637.html
Copyright © 2011-2022 走看看