Lambda表达式简化过程

Lambda表达式

new Thread ( ()->System.out.println("多线程学习。。。")) .start();

函数式接口:接口(interface)中只有一个方法要实现!

 //接口
 interface ILike{
     void lambda();
 }

 

1、定义实现类实现方法

 //接口
 interface ILike{
     void lambda();
 }

 

 //实现类
 class Like implements ILike{
     //重写实现接口方法
     @Override
     public void lambda(){
         system.out.println("i like lambda");
    }
 }

创建实现类对象实现接口方法

 //主方法测试
 public static void main(String[] args) {
     ILike like = new Like();//new一个实现类来实现接口
     like.lambda();//调用方法
 }

这是最原始的方法


2、静态内部类(初步简化代码)

  • 将实现类写为静态内部类;

 public class TestLambda{
     
     //变为静态内部类
     static class Like implements ILike{
         @Override
         public void lambda(){
             system.out.println("i like lambda");
        }
    }
 ​
     //main
     public static void main(String[] args) {
         ILike like = new Like();
         like.lambda();
    }
 }

3、局部内部类(进一步简化)

 //main方法
 public static void main(String[] args) {
     
     //局部内部类
     class Like implements ILike{
     @Override
     public void lambda(){
         system.out.println("i like lambda");
    }
  }
     
     ILike like = new Like()
     like.lambda();
 }

 


4、匿名内部类(省略名字)

 //main
 public static void main(String[] args) {
     ILike like = new ILike(){//直接重写接口方法
         @Override
         public void lambda(){
             system.out.println("i like lambda");
        }
    };//注意这里的分号,此时他是一个语句而非一个类!
     like.lambda();//调用方法
 }

5、Lambda表达式(更加简化)

 //main
 public static void main(String[] args) {
     ILike like = ()->{//方法体代码块
        system.out.println("i like lambda");
    }
     like.lambda();//调用方法
 }

总结

Lambda表达式还能够更加简化

(int a)->{system.out.println("i like lambda");}


  • 1、去掉参数类型;(a)->{system.out.println("i like lambda");}

  • 2、去掉括号;a->{system.out.println("i like lambda");}

  • 3、去掉花括号;a->system.out.println("i like lambda");

注意:1、只有一个方法的时候才能够简化去掉花括号,如果有多行就要用代码块包裹;

2、必须是函数式接口;

3、多个参数也可以去掉参数类型,此时必须加括号(要去掉就都去掉);

上一篇:tomcat 日志按每天记录


下一篇:N种内部类