@Test
public void test01(){
//实现接口的方式
Runnable a1 = new Runnable() {
@Override
public void run() {
System.out.println("fghj");
}
};
a1.run();
//Lambda方式
Runnable a2=()->{
System.out.println("56789");
};
a2.run();
}
2、有参无返回值
@Test
public void test02() {
//接口消费者
Consumer a = new Consumer() {
@Override
public void accept(String s) {
System.out.println(s);
}
};
a.accept("56789");
//Lambda表达式
Consumer b = (String string) -> {
System.out.println(string);
};
b.accept("56789");
}
3、省略数据类型(类型推断)
@Test
public void test03() {
//同上(使用编译器的类型推断)
Consumer c = (str) -> {
System.out.println(str);
};
c.accept("5678");
//对编译器的类型推断(后面泛型忽略,前面推断到后面)
ArrayList list = new ArrayList<>();
}
4、一个参数,省略括号
@Test
public void test04() {
Consumer c=str->{
System.out.println(str);
};
}
5、两个及以上参数,多条执行语句,可有return
@Test
public void test05() {
Comparator comparator = (o1,o2)->{
System.out.println("678");
System.out.println("ghj");
return o1.compareTo(o2);
};
int compare = comparator.compare(12, 89);
System.out.println(compare);
}
6、只有只有一条语句,{}和return都可省略
@Test
public void test06() {
Comparator comparator = (o1, o2) -> o1.compareTo(o2);;
int compare = comparator.compare(12, 89);
System.out.println(compare);
}
小结:
1.— >Lambda操作符
2.左边:接口中的形参
3.右边:方法体
4.左边多参不可省略()
5.右边多语句不能省略{}
6.右边单语句可省略return
7.@FunctionalInterface(使用该函数式注解的一定能使用Lambda表达式;该注解使用情况接口中只有一个实现方法才能用)



