Java泛型
一、概述
1、泛型含义
Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。
编译器提前规定好的类、接口、方法等需要的数据类型。
2、泛型好处
A.提前检查(运行时可能出现的类型转换异常,提前到编译时是否通过)
B.简洁代码(不需要手动向下转型,快捷键直接提示出来类型)
3、泛型分类
A.泛型方法
B.泛型类
C.泛型接口
D.泛型通配符(泛型上限和下限)
二、常见的泛型案例
1、泛型方法
A.定义时
修饰符 <泛型> 返回值 方法名称 (参数){ 方法体; return 返回值; } //定义未知不具体类型
B.使用时(调用方法)
具体返回值类型 返回值 = 方法名称(具体参数); //使用已知具体类型
2、泛型类
A.定义时
修饰符 class 类名称<泛型>{ } //定义未知不具体类型
B.使用时(创建对象)
类名称<具体类型> 对象名称 = new 类名称<具体类型>(); //使用已知具体类型
3、泛型接口
A.定义时
修饰符 interface 接口名称<泛型>{ }
B.使用时 (实现类或者创建实现类对象时候)
第一种:修饰符 class 类名称<具体类型> implements 接口名称{ } //使用已知具体类型
第二种:类名称<具体类型> 对象名称 = new 类名称<具体类型>(); //使用已知具体类型
4、泛型通配符
A.含义:
不知道使用什么数据类型的时候,泛型可以使用 ?
B.格式:
Collection<?> 可以传递各种泛型类型的对象
例如: 这些都可以传递 Collection<Object> Collection<String> Collection<Integer>
C.高级使用: (Number是Integer的父类)
Collection<? extends Number> 只能接收 Number类型以及子类类型. (专业术语"泛型的上限")
Collection<? super Number> 只能接收 Number类型以及父类类型. (专业术语"泛型的下限")