/**
* Lambda表达式创建函数式接口的实例对象
*
* 举例:(o1, o2) -> Integer.compare(o1, o2)
* 格式:
* -> Lambda操作符或箭头操作符
* ->左边 Lambda形参列表(接口中抽象方法的形参列表)
* ->右边 Lambda体(重写的抽象方法的方法体)
*
*/
public class LambdaTest {
/**
* 格式1:无参,无返回值 实现类
*/
@Test
public void test1() {
// Runnable r = new Runnable() {
// @Override
// public void run() {
// System.out.println("玛尼玛尼哄"。);
// }
// };
// r.run();
Runnable r = () -> {
System.out.println("玛尼玛尼哄。");
};
r.run();
}
/**
* 格式2:有一个参数,无返回值
*/
@Test
public void test2() {
// Consumer<String> c = new Consumer<String>() {
// @Override
// public void accept(String s) {
// System.out.println(s);
// }
// };
// c.accept("一切梦已做尽。");
Consumer<String> c = (String s) -> {
System.out.println(s);
};
c.accept("想做的梦却没有成。");
}
/**
* 格式3:有一个参数,无返回值
* 数据类型可以省略,可由编译器推断得出,称为“类型推断”
*/
@Test
public void test3() {
// Consumer<String> c = new Consumer<String>() {
// @Override
// public void accept(String s) {
// System.out.println(s);
// }
// };
// c.accept("一切梦已做尽。");
Consumer<String> c = (s) -> {
System.out.println(s);
};
c.accept("想做的梦却没有成。");
}
/**
* 格式4:有一个参数,无返回值
* 参数的小括号可以省略
*/
@Test
public void test4() {
// Consumer<String> c = new Consumer<String>() {
// @Override
// public void accept(String s) {
// System.out.println(s);
// }
// };
// c.accept("一切梦已做尽。");
Consumer<String> c = s -> {
System.out.println(s);
};
c.accept("想做的梦却没有成。");
}
/**
* 格式5:有两个或以上的参数,小括号不能省略
* 多条执行语句,可以有返回值
*/
@Test
public void test5() {
// Comparator<Integer> c = new Comparator<Integer>() {
// @Override
// public int compare(Integer o1, Integer o2) {
// System.out.println(o1);
// System.out.println(o2);
// return o1.compareTo(o2);
// }
// };
// System.out.println(c.compare(12, 21));
Comparator<Integer> c = (o1, o2) -> {
System.out.println(o1);
System.out.println(o2);
return o1.compareTo(o2);
};
System.out.println(c.compare(21, 12));
}
/**
* 格式6:Lambda体只有一条语句,return与大括号可以省略
*/
@Test
public void test6() {
// Comparator<Integer> c = (o1, o2) -> {
// return o1.compareTo(o2);
// };
// System.out.println(c.compare(12, 21));
Comparator<Integer> c = (o1, o2) -> o1.compareTo(o2);
System.out.println(c.compare(21, 12));
}
}
javase:Lambda
于 2022-02-18 19:31:12 首次发布