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

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

public <T> List<T> show(T t, Collection<T> c)
  1. 从左到右第一个T充当修饰符的作用,表示这个被修饰的方法是个泛型方法(就像被static修饰的方法为静态方法一样),此处的<T>可不是表示返回值类型哦!
  2. 第二个T,表示这个方法返回值类型为List,且这个List有泛型,只能存T类型的数据;
  3. 第三个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,不然这个方法会报错的。
最后:泛型的声明,必须在方法的修饰符(public,static,final,abstract等)之后,返回值声明之前。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 与Java泛型相同,Kotlin同样提供了泛型支持。对于简单的泛型类、泛型函数的定义,Kotlin 与 Java ...
    凌寒天下独自舞阅读 295评论 0 0
  • 前言 泛型(Generics)的型变是Java中比较难以理解和使用的部分,“神秘”的通配符,让我看了几遍《Java...
    珞泽珈群阅读 7,991评论 12 51
  • object 变量可指向任何类的实例,这让你能够创建可对任何数据类型进程处理的类。然而,这种方法存在几个严重的问题...
    CarlDonitz阅读 949评论 0 5
  • 引言:泛型一直是困扰自己的一个难题,但是泛型有时一个面试时老生常谈的问题;今天作者就通过查阅相关资料简单谈谈自己对...
    cp_insist阅读 1,883评论 0 4
  • 今早花了三个小时,终于把租的房子确定了。中途 接到了爸爸的电话,爷爷过世了。我一时说不出什么。爷爷是从小带我的那个...
    满眼都是豆豆阅读 254评论 3 1