Java lambda表達式與泛型整理總結

泛型

泛型的語法定義

class 類名 <泛型標識,泛型標識,…>{ private 泛型標識1,變量名;常用的泛型標識:T,E,K,V } 裡面正常寫法

public class GenericDemo<K> {
    //定義數組
    private K[] arr;
}

泛型的使用語法

  • 類名<具體的數據> 對象名 = new 類名<具體的數據類型>()
  • jdk1.7之後,後邊的<>可以省略不寫
  • 類名<具體的數據> 對象名 = new 類名<>()

泛型總結

  • 類型參數化,讓類的定義更加通用
  • 泛型不支持基本類型,因為在編譯時,基本類型無法轉換成Object
  • 泛型類在創建對象的時候,如果沒有指定數據類型,將按照Object類型來操作
  • 同一泛型類在邏輯上可以看成是多個不同的類型,但實際是相同的類型

從泛型類派生子類

子類也是泛型,子類和父類的泛型要一致 (例如:連泛型的類型T要一致,寫的內容相同),

如果父類沒有指明類型,則父類要按照Object類型處理

public class Child<T> extends Parent<T> {
}

子類不是泛型,父類要明確泛型類型,

如果父類沒有指明類型,則父類要按照Object類型處理

泛型接口

  • 泛型接口的語法定義:interface 接口名<泛型標識1,泛型標識2,…>{ 泛型標識 方法名(); … }
  • 實現類也是泛型,實現類和接口的泛型要一致,如果接口沒有指明類型,則接口要按照Object類型處理
  • 實現類不是泛型,接口要明確泛型接口的數據類型,如果接口沒有指明類型,則接口按照Object類型處理

lambda表達式

lambda表達式概念

  • 面向對象的編程中強調,必須通過對象的形式去做事情;函數思想則是盡量忽略對象的復雜寫法,“強調做什麼,而不是以什麼形式去做”
  • lambda表達式就是函數思想的體現
  • lambda表達式就是定義函數式的簡化寫法,而不是函數調用的簡化寫法

lambda表達式格式

  • 三要素:形式參數,箭頭,代碼塊
  • 形如:(形參)->代碼塊
  • 形參如果多個參數,參數之間逗號隔開,如果沒有參數,留空括號,不用留空格
  • -> 一定的是英文,固定寫法,表示執行
  • 代碼塊:具體要做的事情
  • 使用前提:使用接口:接口當中有且隻有一個抽象方法

代碼示例:

package com.lambda;
public class Lambda {
    public static void main(String[] args) {
        //正常寫法
        Mythread mythread = new Mythread();
        Thread t = new Thread(mythread);
        t.start();
        //匿名內部類
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("多線程1就緒瞭");
            }
        }).start();
        //lambda表達式:創建線程
        new Thread(()->{
            System.out.println("多線程2就緒瞭");
        }).start();
    }
}
class Mythread implements Runnable{
    @Override
    public void run() {
        System.out.println("多線程就緒");
    }
}

到此這篇關於Java lambda表達式與泛型整理總結的文章就介紹到這瞭,更多相關Java lambda表達式與泛型內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: