泛型 Lambda簡介

2021-08-19 04:29:53 字數 1738 閱讀 6933

泛型:

在使用collection收集物件時,由於事先不知道被收集物件的形態,因此內部操作時都是使用 object來參考被收集的物件,取回物件時也是以 object型別返回。由於取回物件時會以 object型別返回,若想針對某類定義的行為操作時,必須告訴編譯程式,讓物件重新扮演該型別。例如

list names = arrays. aslist("justin","monica","irene");

string name =(string) words. get(0)

collection收集物件時,考慮到收集各種物件的需求,因而內部操作採用 object參考收集的物件,所以執行時期被收集的物件會失去形態資訊,也因此取回物件之後,必須自行記得物件的真正型別,並在語法上告訴編譯程讓物件重新扮演為自己的型別。collection雖然可以收集各種物件,但實際上通常 collection中會收集同一種型別的物件。因此從jdk5之後,新增了泛型( generics)語法,讓你在設計api時可以指定類或方法支援泛型,而使用api的客戶端在語法上會更為簡潔,並得到編譯時期檢查。類名旁出現角括號表示支援泛型語法

public

inte***ce comparator

操作泛型介面:

public

class

scimplements

comparator

}

如果不用泛型:

public

class

scimplements

comparator

}

只要宣告引數時有指定型別,建立物件時就不用再寫型別。

方法設計成泛型:

public

static

t some(t t,int i)

.......

string a=some(args,i);//呼叫方法

lambda:

匿名類語法:

request request =new request() 

};

宣告 request變數時已經告知是 request型別,而建立 request例項的匿名類語法又寫了一次,實際上 request介面只有乙個方法必須實現,當這種情況發生時,在jdk8中使用 lambda表示式( expression)如下撰寫:

request

request=()->out. println("gggggg");

相對於匿名類語法來說, lambda:表示式的語法省略了介面型別與方法名稱,→左邊是引數列,而右邊是方法本體,編譯程式可以由 request request的宣告中得知語法上被省略的資訊。

如果要返回值:

inte***ce

request

......//lambda語法

request request=(i)->i*2;

泛型+lambda:

inte***ce request 

......

//lambda語法

request<

string

> request=(name1,name2)->name1.length()-name2

.length();

泛型 泛型簡介和泛型類

在泛型引入之前,如果我們需要產生多個物件,每個物件的邏輯完全一樣,只是物件內的成員變數的型別不同,那麼我們只能建立多個類檔案,給每個類的成員變數設定不同的資料型別。這麼做會導致類的膨脹,重用性太差。一種方式是對將object作為變數型別,但是需要對獲取的資料進行強制型別轉換,這個過程可能導致型別轉換...

泛型程式設計簡介

1 資料結構課程的特點 專注於資料元素之間的關係 專注於特定結構之上的演算法 資料結構課程並不關注資料元素的具體型別 如何為資料結構的學習選擇合適的語言?唐老師經驗 支援泛型程式設計的語言是最適合資料結構課程的學習。2 泛型程式設計的概念 不考慮具體資料型別的程式設計方式。c 中的函式模板 1 一種...

C 泛型簡介

在前面已經介紹了類和方法的定義,那麼泛型究竟有什麼作用呢?在前面 c 集合 一節中介紹了集合,集合中的項允許是 object 型的值,因此可以存放任意型別的值 例如,在 arraylist 中以 double 型別存入學生考試成績,但存入值時並沒有做驗證,存入了其他資料型別的值,如下。arrayli...