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表達式就是定義函數式的簡化寫法,而不是函數呼叫的簡化寫法
三要素:形式參數,箭頭,程式碼區塊
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表達式與泛型應用實例分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!