Lambda是一种基于函数的编程语言,对于这种类型的语言典型的代表就是Haskell.但是从java最早开始一直提倡的是面向对象编程,也就是说一切的操作必须有类,所有的功能都要定义在类之中。
很多习惯于函数编程的开发者就觉得java不好用,于是快20年之后,java终于退出了lambda表达式。
但是需要大家明确一点,并不是说有了lambda表达式之后才开始的函数编程。最早在java之中也支持这类的编程,那么它的实现模式就是匿名内部类。
package com.gwolf;
interface Message {
public void print(String msg);
}
public class TestDemo {
public static void main(String[] args) {
Message msg = new Message() {
public void print(String msg) {
}
};
msg.print("hello world");
}
}
执行程序查看程序的执行结果:
实际上写了好久才发现真正需要的知识一个输出语句,但是由于java之中类结构的强制限制,所以很多的人觉得代码过于麻烦了。
利用lambda表达式实现:
package com.gwolf;
interface Message {
public void print(String msg);
}
public class TestDemo {
public static void main(String[] args) {
msg.print("hello world");
}
}
首先先不看语法,至少通过本程序可以发现,如果使用了lambda表达式,这个语句少了,而且也没有了严格的类结构的控制,感觉确认变了。
实际上lambda表达式的语法结构不难理解,他的理解过程:(参数,名称可以随意起,与Message接口定义的print()犯法的参数类型一致)。但是此处不要进行声明。如果现在对完美度的追求比较高的用户,那么也可以声明。
package com.gwolf;
interface Message {
public void print(String msg);
}
public class TestDemo {
public static void main(String[] args) {
msg.print("hello world");
}
}
lambda表达式的语法结构中的->是一个固定语法,表示将参数指向方法体;
方法体就是进行最早匿名内部类实现方法的时候所编写的方法体代码。
在使用lambda表达式的时候有一个最为重要的定义要求,接口里面的方法只能够存在一个。
interface Message { public void print(String msg);}
领取专属 10元无门槛券
私享最新 技术干货