示例1:
package lambda;
public class Test1 {
public void Test(){
// Runnable r1=new Runnable() {
//
// @Override
// public void run() {
// // TODO Auto-generated method stub
// System.out.println("我爱中国");
// }
//
// };
// r1.run();
System.out.println("+++++++++++++++++++")
Runnable r2=() -> System.out.println("我爱北京");
r2.run();
}
public static void main(String[] args) {
Test1 t=new Test1();
t.Test();
}
}
示例2:
public void Test2() {
Comparator<Integer> com1=new Comparator<Integer>() {
@Override
public int compare(Integer o1,Integer o2) {
return Integer.compare(o1,o2);
}
};
int compare1=com1.compare(10, 20);
System.out.println(compare1);
//Lomabda表达式写法
Comparator<Integer> com2=(o1,o2) -> Integer.compare(o1, o2);
int compare2=com2.compare(40, 40);
System.out.println(compare2);
System.out.println("================");
//方法的引用
Comparator<Integer> com3=Integer::compare;
int compare3=com3.compare(50, 40);
System.out.println(compare3);
}
**Lambda表达式的基本语法:**
1.举例:(o1,o2) ->Integer.compare(o1,o2);
2.格式:
->:Lambda操作符或箭头操作符。
->左边:Lambda形参列表(其实就是接口中的抽象方法列表)。
->右边Lambda体(其实就是重写方法的方法体)。
如何使用,分为六种情况:
六种情况的总结:
->左边:Lambda形参列表的参数类型可以省略(类型推断),如果参数列表只有一个参数其()也可以省略。
->右边:Lambda体应该使用{ }包裹;如果Lambda只执行一条语句,省略这对{ }和关键字 return。
Lambda的本质是函数式接口的实例,一个接口中只声明了一个抽象方法的称之为函数式接口
Java8 中定义了4个基本的函数式接口:
当需要使用函数式接口时,应先看看jdk提供的函数式接口是否有能满足需求的函数式接口,若有直接调用。
何时使用Lambda表达式?
当需要将一个函数式接口实例化的时候,可以使用Lambda表达式,
凡要用匿名实现类的时候都可以用Lambda表达式。