首頁 > 軟體

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

2022-07-30 18:05:56

泛型

泛型的語法定義

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表示式與泛型內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com