全國(guó)咨詢(xún)/投訴熱線:400-618-4000

首頁(yè)技術(shù)文章正文

泛型指的是什么?有什么作用?

更新時(shí)間:2021-08-25 來(lái)源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

泛型是程序設(shè)計(jì)語(yǔ)言的一種特性。它允許程序員在使用強(qiáng)類(lèi)型程序設(shè)計(jì)語(yǔ)言編寫(xiě)代碼時(shí)定義一些可變部分這些可變部分在運(yùn)行前必須做出指明。在編程中用泛型來(lái)代替某個(gè)實(shí)際的類(lèi)型,而后通過(guò)實(shí)際調(diào)用時(shí)傳人或推導(dǎo)的類(lèi)型來(lái)對(duì)泛型進(jìn)行替換,以達(dá)到代碼復(fù)用的目的。在使用泛型的過(guò)程中,操作數(shù)據(jù)類(lèi)型被指定為一個(gè)參數(shù),這種參數(shù)類(lèi)型在類(lèi)、接口和方法中,分別稱(chēng)為泛型類(lèi)、泛型接口、泛型方法。相對(duì)于傳統(tǒng)上的形參,泛型可以使參數(shù)具有更多類(lèi)型上的變化,使代碼能更好地復(fù)用。例如下面這段代碼:

public class Box
  private String value;
     public void set (String value) {
       this.value=value;
    }
public String get () {
   return value;
   }
}
上述代碼中,定義了一個(gè)Box類(lèi),Box類(lèi)中設(shè)置了一個(gè)Sring類(lèi)型的數(shù)據(jù)。這時(shí)程序運(yùn)行起來(lái)是沒(méi)有問(wèn)題的。但是,如果需要一個(gè)能設(shè)置Integer類(lèi)型數(shù)據(jù)的類(lèi),這個(gè)時(shí)候只能重新創(chuàng)建一個(gè)類(lèi),把value改為Integer類(lèi)型的??墒牵S著業(yè)務(wù)不斷增加,需要設(shè)置越來(lái)越多數(shù)據(jù)類(lèi)型的類(lèi),這樣會(huì)使工程變得越來(lái)越“笨重”,并且安全性和重用性都非常低。

泛型就能夠很好地解決上述問(wèn)題。下面使用泛型改造Box類(lèi),具體代碼如下:

public class Box<T> {
private T t;
public void set (T t) {
this.t=t;
public T get () {
return t;
  }
}


上述代碼中,Box類(lèi)在定義時(shí)使用了“<I>”的形式,T表示此類(lèi)型是由外部調(diào)用本類(lèi)時(shí)指定的。這樣,在實(shí)例化類(lèi)對(duì)象時(shí)可以傳入除基礎(chǔ)數(shù)據(jù)類(lèi)型以外的任意類(lèi)型數(shù)據(jù),使類(lèi)具有良好的通用性。
在泛型中,T可以使用任意的字母代替,如“<A>”“<B>”。之所以使用“<T>”是因?yàn)門(mén)是type的縮寫(xiě),表示類(lèi)型。






猜你喜歡:

jdbc連接oracle數(shù)據(jù)庫(kù)步驟代碼

Oracle數(shù)據(jù)庫(kù)是什么?有什么特點(diǎn)?

Java泛型技術(shù)詳細(xì)教程[java培訓(xùn)]

TCP通信步驟和特點(diǎn)介紹

黑馬程序員java開(kāi)發(fā)培訓(xùn)課程

分享到:
在線咨詢(xún) 我要報(bào)名
和我們?cè)诰€交談!