源码阅读中的常客--泛型

2019-03-17  本文已影响0人  LiChangBao

了解泛型一个例子足矣,多加应用提高代码的拓展性的同时也能提升逼格!

public <T> List<T> show(T t, Collection<T> c)
  1. 从左到右第一个T充当修饰符的作用,表示这个被修饰的方法是个泛型方法(就像被static修饰的方法为静态方法一样),此处的<T>可不是表示返回值类型哦!
  2. 第二个T,表示这个方法返回值类型为List,且这个List有泛型,只能存T类型的数据;
  3. 第三个T,表示这个方法的参数类型。

疑问:一个方法的返回值类型后面加不加<T>有什么区别呢?

class Demo{
  public <T> List<T> show(T t, Collection<T> c){
      for(T t : c){
          c.add(t);
      }  
  }
}

加<T>的方法相当于为该方法声明了一个类型为T的类,这个方法放到任意一个类中都不会报错的。

class Demo<T>{
  public  List<T> show(T t, Collection<T> c){
      for(T t : c){
          c.add(t);
      }  
  }
}
最后:泛型的声明,必须在方法的修饰符(public,static,final,abstract等)之后,返回值声明之前。
上一篇下一篇

猜你喜欢

热点阅读