了解泛型一個(gè)例子足矣凌简,多加應(yīng)用提高代碼的拓展性的同時(shí)也能提升逼格!
public <T> List<T> show(T t, Collection<T> c)
- 從左到右第一個(gè)T充當(dāng)修飾符的作用雏搂,表示這個(gè)被修飾的方法是個(gè)泛型方法(就像被static修飾的方法為靜態(tài)方法一樣)寇损,此處的<T>可不是表示返回值類型哦!
- 第二個(gè)T矛市,表示這個(gè)方法返回值類型為List,且這個(gè)List有泛型浊吏,只能存T類型的數(shù)據(jù);
- 第三個(gè)T歌憨,表示這個(gè)方法的參數(shù)類型。
疑問:一個(gè)方法的返回值類型后面加不加<T>有什么區(qū)別呢务嫡?
- 加<T>
class Demo{
public <T> List<T> show(T t, Collection<T> c){
for(T t : c){
c.add(t);
}
}
}
加<T>的方法相當(dāng)于為該方法聲明了一個(gè)類型為T的類,這個(gè)方法放到任意一個(gè)類中都不會(huì)報(bào)錯(cuò)的心铃。
- 不加<T>
class Demo<T>{
public List<T> show(T t, Collection<T> c){
for(T t : c){
c.add(t);
}
}
}
- 不加<T>方法相當(dāng)于沒有聲明類型為T的類,這時(shí)必須在類上面加上泛型T柱衔,不然這個(gè)方法會(huì)報(bào)錯(cuò)的。