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!
推薦閱讀:
- Java多線程Thread類的使用及註意事項
- Java中Thread和Runnable創建線程的方式對比
- Java基礎之多線程的三種實現方式
- Java創建並運行線程的方法
- 多線程Thread,Runnable,Callable實現方式