您的位置:首页 > 编程语言 > Java开发

关于java泛型的个人理解

2020-07-04 22:38 33 查看

一:什么是泛型
从字面意思理解泛型即为宽泛的类型,当我们写一个通用的类或方法来处理不同的类型的对象的时候就可以使用泛型技术。在声明类或方法的时候可以声明为泛型的类或方法,在使用泛型的类或方法的时候可以传入自定义的类型。
现实生活中,炒菜用的油瓶并且油瓶上可以贴标签,当我们往里装花生油的时候标签上写上花生油,那用的时候就知道瓶里装的花生油,同理,当我们往里装大豆油的时候标签上写上大豆油。这个标签就相当于我们的泛型,每次装不同的东西写不同的标签。我们在实例化泛型类的时候写入不同的类型。

二:为什么要用泛型
当我们在写处理不同类型的通用类或者集合中存放不同类型的对象时全部都可以用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的父类。通配符的使用主要是为了在进行泛型类的引用或者方法传参时更加的灵活。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: