Java --Lamda表达式

2020-11-10 23:05:37 浏览数 (1)

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

代码语言:javascript复制
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表达式。

代码语言:javascript复制
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 — (参数) -> 表达式

观察代码:

代码语言:javascript复制
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!") ;  //设置参数的内容
    }
}
代码语言:javascript复制
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!") ;  //设置参数的内容
    }
}
代码语言:javascript复制
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表达式最终解决的问题是:避免了匿名内部类内定义过多无用的操作。

~~~~~

0 人点赞