首页 > 其他分享 >泛型

泛型

时间:2022-10-27 22:36:16浏览次数:37  
标签:ArrayList List 类型 编译器 参数 泛型

泛型(Generics)是JDK5中引入的特性。使用泛型参数,可以增加代码的可读性以及稳定性

编译器可以对泛型参数进行检测,并且通过泛型参数可以指定传入的对象类型。比如

ArrayList<Person> persons = new ArrayList<Person>() 这行代码指明了该ArrayList对象只能传入

Person对象,如果传入其它类型的对象就会报错

ArrayList<E> extends AbstractList<E>

并且,原生List返回类型时Object,需要手动转换类型才能使用,使用泛型后编译器自动转换

泛型使用方式:泛型类、泛型接口、泛型方法

 

泛型类:    

 

 实例化泛型类:

  

 

 泛型接口:

 

 实现泛型接口,不指定类型

  

 

 实现泛型接口,指定类型:

  

 

 泛型方法:

  

 

 

 

 注意: public static < E > void printArray( E[] inputArray ) 一般被称为静态泛型方法;在 java 中泛型只是一个占位符,必须在传递类型后才能使用。类在实例化时才能真正的传递类型参数,由于静态方法的加载先于类的实例化,也就是说类中的泛型还没有传递真正的类型参数,静态的方法的加载就已经完成了,所以静态泛型方法是没有办法使用类上声明的泛型的。只能使用自己声明的 <E>

 

项目中哪里用到了泛型?

 

 泛型类型擦除:
  java中的泛型基本上都是在编译器这个层次来实现的。生成的java字节代码中是不包含泛型中的类型信息。使用泛型的时候加上的类型参数,会被编译器在编译的时候去掉。这个过程就称为类型擦除。

如:在代码中定义的List<Object> 和List<String>等类型,编译后都会变成List,JVM看到的知识List,

而由泛型附加的类型信息对JVM来说是不可见的。类型擦除过程:首先是找到用来替换类型参数的具体类,这个具体类一般是Object。如果指定了类型参数的上界,则使用这个上界,把代码中的类型参数都替换成具体的类。

 

标签:ArrayList,List,类型,编译器,参数,泛型
From: https://www.cnblogs.com/doremi429/p/16834240.html

相关文章

  • 泛型列表转ToDataTable
    ///<summary>///列表转换DataTable助手///</summary>publicstaticclassListToDatatableHelper{///<summary>///将泛型实......
  • TypeReference 获取泛型属性
    当一个对象含有的属性有泛型时,反序列化该对象可以尝试使用TypeReference.例如:@DatapublicclassRedisData<T>{privateLocalDateTimeexpireTime;priva......
  • 通过实现集合来理解泛型
    1.普通集合实现一个string类型的集合,可以添加string类型元素和根据索引读取基本功能。1internalclassProgram2{3staticvoidMain(string[]a......
  • Java中的泛型【多测师_王sir】【软件测试】
    泛型是编译期特性,你只要记住加上就是约束了、限制了,编译期只能加某个类型的对象,计算编译期限制了,实际上在运行期还能把泛型擦除的,可以把泛型理解为一种约束即可。但是运行期......
  • JAVA---HashMap的四种遍历方式,未加泛型
    publicclassHashMapDemo{publicstaticvoidmain(String[]args){HashMaphashMap=newHashMap();hashMap.put("小吉祥草王","纳西妲");......
  • 泛型
    泛型泛型介绍(1)泛型又称参数化类型(接收数据类型的数据类型),是Jdk5.0出现的新特性,解决数据类型的安全性问题(2)在类声明或实例化时只要指定好需要的具体的类型即可(3......
  • 泛型
    (1)泛型可以在编译阶段约束操作的数据类型,并进行检查。(2)泛型的格式:<数据类型>(3)注意:泛型只能支持引用数据类型,像基本数据类型要用它的包装类。(4)如果没有泛型,即没有给集合指......
  • java泛型11day
           ......
  • java---泛型(Generics)
    泛型是JDK1.5以后增加的,它可以帮助我们建立类型安全的集合。什么是泛型泛型的本质就是“数据类型的参数化”,处理的数据类型不是固定的,而是可以作为参数传入,可以把“泛......
  • Typescript中的类型和泛型
    类型推断类型猜测:我们定义的数据,没有指明类型,此时ts会根据赋值的结果做猜测。类型推断:我们定义的变量,有时候,我们比计算机更了解变量的类型,此时让计算机去猜测可能达不到预期......