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表达式最终解决的问题是:避免了匿名内部类内定义过多无用的操作。
~~~~~