1 public class lambdaDemo {
2 /*
3 * 这个方法主要是用来延迟创建实例的
4 * 1. 采用接口,在接口中定义唯一的方法
5 * 2. 在main方法中用匿名内部类的方式调用
6 * 3. 这个中用到的是java中本来就有的泛型Supplier 中的.get()方法
7 *
8 * */
9 public static void logMsg(int i, Supplier<String> initInter){
10 if (i==1){
11 System.out.println(initInter.get() +"运行正常");
12 }else if (i==2){
13 System.out.println(initInter.get() +"2级错误");
14 } else if (i==3){
15 System.out.println(initInter.get()+"3级错误");
16 }
17 }
18 public static void main(String[] args) {
19 String name = lambdaDemo.class.getName();
20 // 相比于匿名内部类的用法,lambda表达式中,没有接口中方法的实现名称,也没有接口的名称,接口名称省略,但是
21 // 如果有参数,参数直接写在括号中
22 logMsg(1, ()-> {
23 {
24 return "main"+"-"+name +"test";
25 }
26 });
27 }
28 }