1. 程式人生 > 實用技巧 >vue資料監聽

vue資料監聽

技術標籤:多執行緒lambdajava

Lambda表示式

函式式介面

  • 任何介面,如果只包含唯一一個抽象方法,那麼它就是一個函式式介面

    public interface Runnable{
      public abstract void run();
    }

  • 對於函式式介面,我們可以通過lambda表示式來建立該介面的物件

Lambda表示式

  • 推導Lambda表示式

/*
推導lambda表示式,從2到6,一步一步簡化
 */
public class TestLambda1 {
  //3、靜態內部類
  static class Like2 implements ILike{
    @Override
    public void lambda() {
      System.out.println("i like lambda2");
     }
   }
​
  public static void main(String[] args) {
    ILike like =new Like();
    like.lambda();
​
    like=new Like2();
    like.lambda();
​
    //4、區域性內部類
    class Like3 implements ILike{
      @Override
      public void lambda() {
        System.out.println("i like lambda3");
       }
     }
​
    like=new Like3();
    like.lambda();
​
    //5、匿名內部類,沒有類的名稱,必須藉助介面或父類
    like=new ILike() {
      @Override
      public void lambda() {
        System.out.println("i like lambda4");
       }
     };
    like.lambda();
​
    //6、用lambda簡化(jdk8才出現),因為介面只有一個抽象方法,因此可以省略介面名和方法名
    like=()->{
      System.out.println("i like lambda5");
     };
    like.lambda();
   }
}
​
//1、定義一個函式式介面
interface ILike{
  void lambda();
}
​
//2、實現類
class Like implements ILike{
  @Override
  public void lambda() {
    System.out.println("i like lambda");
   }
}
  • 簡化Lambda表示式

public class TestLambda2 {
​
  public static void main(String[] args) {
    //lambda表示式
    ILove love=(int a)->{
        System.out.println("i love you"+a);
       };
    love.love(6);
​
    //簡化1:引數簡化
    love=(a)->{
      System.out.println("i love you"+a);
     };
    love.love(7);
​
    //簡化2:簡化括號
    love=a->{
      System.out.println("i love you"+a);
     };
    love.love(8);
​
    //簡化3:去掉花括號
    love=a->System.out.println("i love you"+a);
    love.love(9);
​
    //總結:1、lambda表示式只能有一行程式碼的情況下才能簡化成一行(去掉花括號),如果有多行,就用程式碼塊包裹
    //2、多個引數也可以去掉引數型別,要去掉都去掉,必須加上括號
   }
}
​
interface ILove{
  void love(int a);
}
  • 使用Lambda必須具有上下文推斷。 也就是方法的引數或區域性變數型別必須為Lambda對應的介面型別,才能使用Lambda作為該介面的例項。
    public class TestJoin{
        public static void main(String[] args) throws InterruptedException {
            Thread thread=new Thread(()->{for (int i = 0; i < 1000; i++) {
                System.out.println("vip來了"+i);//因為new Thread()方法的引數是Runnable型別的,因此後面的lambda表示式是Runnable型別的例項,而不是其他型別的例項
            }});
            thread.start();
        }
    }