泛型知识点总结,泛型类、泛型方法以及泛型接口的用法以及泛型擦除的内容

泛型:JDK1.5以后引入的三大常用新特性:泛型、枚举、注解
作用:用来解决参数转换问题

泛型的基本使用:泛型指的是在类的定义的时候并不会设置类的属性和方法中的参数的具体类型,而是在类使用时再进行定义,如果要进行这种泛型操作,就必须做一个类型标记声明

实例:

尖括号里的T是一个占位符,用来指代任何类型,java一般用单个大写字母来代表类型参数

一个类被<T>的形式定义,那么它就被称为泛型类。

泛型类的使用方式:

实例:

泛型还可以接收多个类型参数及使用:

泛型的出现彻底改变了向下转型的需求,引入泛型后如果明确设置了类型,则为设置类型;如果没有明确设置类型,那么就默认为Object类型(默认可以传入任何类型)

扫描二维码关注公众号,回复: 2446165 查看本文章

泛型方法:

定义方式和泛型类类似,实例:

泛型方法和泛型类型不同的是,类型参数也就是尖括号那部分是写在返回值前面的,<T>中的T被称为类型参数,而方法中的T被称为参数化类型,他不是真正的参数

泛型方法和泛型类可以共存,从上面的实例就可以看出来

泛型方法和泛型类中的类型参数是没有相应联系的,泛型方法始终以自己定义的类型参数为准:

实例:

我们可以看到类型参数我们设置的是String,但是方法参数我们设置的是int,虽然名称相同都是T,但是并不相互干扰,在这里为了区分两个参数,建议方法参数类型和类参数类型用不同的字母表示,避免一起误会。

泛型中还有一个重要的知识点   ->   通配符(****):为了解决参数统一问题,避免出现ClassCastException的问题

可以接收所有的泛型类型,但是用户并不能随意的修改,这时候就需要用到通配符“?”来处理

实例:

在?的基础上有两个子通配符:

? extends 类:设置泛型的上限

? super 类:设置泛型下限

例如:?super String,表示只能设置String及其父类Object

上限只能用在声明,不能修改,下限只能用在方法参数,可以修改内容

泛型接口:

实例:实现一个泛型接口

对于这个接口的实现子类有两种方法:

1.在子类定义的时候继续使用泛型

2.在子类实现接口的时候明确给出具体类型

类型擦除:泛型信息只存在于代码编译阶段,在进入JVM之前,与泛型相关的信息就会被擦除,专业术语叫类型擦除

所以泛型属于java的一个语法糖

猜你喜欢

转载自blog.csdn.net/sd116460/article/details/81230579