W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
在定義類,接口和方法時(shí),泛型使能類型(類和接口)作為參數(shù)。與在方法聲明中使用的更熟悉的形式參數(shù)非常類似,類型參數(shù)提供了一種方法,可以為不同的輸入重復(fù)使用相同的代碼。區(qū)別在于形式參數(shù)的輸入是值,而類型參數(shù)的輸入是類型。
可以對(duì)集合類(如List類)進(jìn)行一般化,以便只有該類型的集合在應(yīng)用程序中被接受。下面顯示了一般化ArrayList的示例。以下語(yǔ)句的作用是它只接受類型為string的列表項(xiàng) -
List<String> list = new ArrayList<String>();
在下面的代碼示例中,我們將執(zhí)行以下操作:
class Example { static void main(String[] args) { // Creating a generic List collection List<String> list = new ArrayList<String>(); list.add("First String"); list.add("Second String"); list.add("Third String"); for(String str : list) { println(str); } } }
上述程序的輸出將是 -
First String Second String Third String
整個(gè)類也可以泛化。這使得類更靈活地接受任何類型,并相應(yīng)地與這些類型工作。讓我們來(lái)看一個(gè)例子,說(shuō)明我們?nèi)绾巫龅竭@一點(diǎn)。
在以下程序中,我們執(zhí)行以下步驟 -
我們正在創(chuàng)建一個(gè)名為L(zhǎng)istType的類。注意放置在類定義前面的<T>關(guān)鍵字。這告訴編譯器這個(gè)類可以接受任何類型。因此,當(dāng)我們聲明這個(gè)類的一個(gè)對(duì)象時(shí),我們可以在聲明期間指定一個(gè)類型,并且該類型將在占位符<T>。
泛型類有簡(jiǎn)單的getter和setter方法來(lái)處理類中定義的成員變量。
在主程序中,注意我們能夠聲明ListType類的對(duì)象,但是不同類型的對(duì)象。第一個(gè)類型是Integer類型,第二個(gè)類型是String類型。
class Example { static void main(String[] args) { // Creating a generic List collection ListType<String> lststr = new ListType<>(); lststr.set("First String"); println(lststr.get()); ListType<Integer> lstint = new ListType<>(); lstint.set(1); println(lstint.get()); } } public class ListType<T> { private T localt; public T get() { return this.localt; } public void set(T plocal) { this.localt = plocal; } }
上述程序的輸出將是 -
First String 1
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: