源码阅读中的常客--泛型
2019-03-17 本文已影响0人
LiChangBao
了解泛型一个例子足矣,多加应用提高代码的拓展性的同时也能提升逼格!
public <T> List<T> show(T t, Collection<T> c)
- 从左到右第一个T充当修饰符的作用,表示这个被修饰的方法是个泛型方法(就像被static修饰的方法为静态方法一样),此处的<T>可不是表示返回值类型哦!
- 第二个T,表示这个方法返回值类型为List,且这个List有泛型,只能存T类型的数据;
- 第三个T,表示这个方法的参数类型。
疑问:一个方法的返回值类型后面加不加<T>有什么区别呢?
- 加<T>
class Demo{
public <T> List<T> show(T t, Collection<T> c){
for(T t : c){
c.add(t);
}
}
}
加<T>的方法相当于为该方法声明了一个类型为T的类,这个方法放到任意一个类中都不会报错的。
- 不加<T>
class Demo<T>{
public List<T> show(T t, Collection<T> c){
for(T t : c){
c.add(t);
}
}
}
- 不加<T>方法相当于没有声明类型为T的类,这时必须在类上面加上泛型T,不然这个方法会报错的。