函数式编程 lambda表达式
从JDK1.8之后为了简化程序的开发,专门提供了lambda表达式的支持,可以简化编程中接口的复杂操作:
范例: 观察以下传统开发中的问题
public interface IMessage {
public void send(String str); }
package org.interfaces;
public class IMessageImpl implements IMessage{
@Override public void send(String str) { // TODO Auto-generated method stub System.out.println("消息发送"+str); }
}
package org.interfaces;
public class Test {
public static void main(String[] args) {
IMessage msg=new IMessageImpl();
msg.send("hello"); } }
|
发现以上的传统开发,只是实现一个简单的功能同样也需要很多类的支持
接下来:使用lambda 表达式
public static void main(String[] args) {
IMessage msg=(str)->{
System.out.println("发送的消息"+str);
} ;
msg.send("hello"); } |
整个程序都变得很简单了,其实只用了一句话就完成功能输出,对于Lambda表达式也是存在限制的:
接口中只能存在一个方法
Lambda表达式的格式:
1 方法没有参数: ()->{};
2 方法有参数 : (参数1,参数2 ,参数3)->{};
3 如果只有一行语句: (参数1,参数2 ,参数3)->语句;
范例: 没有参数的方式
public interface IMessage {
public void send(); }
|
public static void main(String[] args) {
IMessage msg=()->{
System.out.println("发送的消息");
} ;
msg.send(); } |