关于java泛型的个人理解
一:什么是泛型
从字面意思理解泛型即为宽泛的类型,当我们写一个通用的类或方法来处理不同的类型的对象的时候就可以使用泛型技术。在声明类或方法的时候可以声明为泛型的类或方法,在使用泛型的类或方法的时候可以传入自定义的类型。
现实生活中,炒菜用的油瓶并且油瓶上可以贴标签,当我们往里装花生油的时候标签上写上花生油,那用的时候就知道瓶里装的花生油,同理,当我们往里装大豆油的时候标签上写上大豆油。这个标签就相当于我们的泛型,每次装不同的东西写不同的标签。我们在实例化泛型类的时候写入不同的类型。
二:为什么要用泛型
当我们在写处理不同类型的通用类或者集合中存放不同类型的对象时全部都可以用object来代替泛型,但这回带来问题,一是当我们存时可以存任何的类型,二是我们在使用的时候需要进行强转,因不知道是什么类型所以强转时会出现类型错误,这样会非常不安全。但泛型的出现都可以避免这些错误的发生。
三:泛型知识点汇总
1.泛型类,在类名后使用标注是一个泛型类,在类的变量和方法中直接使用T作为类型。
2,泛型方法,在方法的修饰符后使用标注是一个泛型方法,在方法参数中可以使用T作为类型参数。
3,对泛型参数的限定,使用<T exends class/interface>来限定泛型参数,如泛型参数为时,我们在使用该泛型类的时候必须是Map的子类型。使用该限定主要是因为当我们对某些类的对象进行操作时必须要求这些类实现了某些功能,比如当我们在泛型类中有一个对泛型参数进行比较的操作,这样限定参数就必须是Comparator接口,在以上油瓶的例子中油瓶限定必须装油就好比是对类型参数的限定。
4,类型擦除,泛型只是JVM层次的,泛型类在虚拟机中编译后都表现为其原始类型,如果泛型没有进行限定其原始类型为Object的,泛型类中的T都会用Object来替代,如果泛型参数有限定,泛型类中的T都会用其限定类型来替代,这就是所谓的类型擦除。当我们在使用泛型类的时候实际上是jvm为我们做了强转。
6,泛型中的继承,泛型类遵顼继承的特性,但是两个泛型类中的泛型参数是子父类关系,但这两个泛型类没有继承关系。
7,泛型统配符,<? extends T>:类是T的子类,<? super T>:类是T或T的父类。通配符的使用主要是为了在进行泛型类的引用或者方法传参时更加的灵活。
- 关于Java泛型深入理解小总结
- 关于java 中的i++和++i [个人理解]
- 个人学习-java-泛型理解
- 关于对 java 泛型中T extendscompareable<? super T>理解
- 黑马程序员--Java基础加强--14.利用反射操作泛型III【解析关于泛型类型的细节信息的获取方法】【Method与泛型相关的方法】【个人总结】
- 关于Java泛型深入理解总结
- 关于java中IO的个人理解
- 关于Java泛型深入理解小总结
- 关于java泛型的简单理解
- 关于Java程序的编译及运行过程的个人理解:
- 关于java中finally中的语句在return前还是后执行的个人理解。
- Java关于个人对于Socket的理解,Socket多线程批量上传文件,适合新手
- 关于java IO中write的个人理解
- 个人关于java与指针的理解
- 个人理解下推荐给菜鸟学习的关于java的基础技术
- 关于java中方法或者函数,形参,实参的个人理解
- 关于java反射的个人理解
- 关于java工程中文件命名(PO/VO/BO/DTO/POJO/DAO)的个人理解
- 关于C的指针,Java/Python的引用,形参与实参个人理解
- 关于JAVA面向对象基础整理以及个人的理解(适合初学者阅读)