Groovy 泛型

2020-07-13 13:41 更新

在定義類,接口和方法時(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í)行以下操作:

  • 創(chuàng)建一個(gè)只包含字符串的通用ArrayList集合。
  • 向列表中添加3個(gè)字符串。
  • 對(duì)于列表中的每個(gè)項(xiàng)目,打印字符串的值。
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
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)