java泛型
泛型概述
- 泛型: 是JDK5中引入的特性,可以在编译阶段约束操作的数据类型,并进行检查
- 泛型的格式:<数据类型>
- 注意:泛型只能支持引用数据类型
泛型的好处:
- 统一数据类型
- 把运行时期的问题提前到了编译期间,避免了强制类型转换可能出现的异常,因为在编译阶段类型就能确定下来。
- 扩展知识点:Java中的泛型是伪泛型
泛型的细节
- 泛型中不能写基本数据类型
- 因为基本数据类型在集合中没有办法转换为Object类 只有写包装类才能转成Object
- 指定泛型的具体类型后,传递数据时,可以传入该类类型或者其子类类型
- 但大多数是要求 传入类型与泛型类型一致
- 如果不写泛型,类型默认Object
- 泛型中不能写基本数据类型
泛型可以在很多地方可以定义
1. 泛型方法 代码示例:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27import java.util.ArrayList;
public class ListUtil {
private ListUtil(){};
// 类中定义一个静态方法addAll 用来添加多个集合的元素
// E也可以加在类后面
/**
* 参数1: 集合
* 参数2: 最后要添加的元素
* @param <E>
*/
public static <E> void addAll(ArrayList<E> list,E e1,E e2,E e3){
list.add(e1);
list.add(e2);
list.add(e3);
}
// E..e 可变参数
public static <E> void addAll(ArrayList<E> list,E...e){
for(E element : e){
list.add(element);
}
}
}测试方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19import java.util.ArrayList;
/**
* 定义一个工具类: ListUtil
* 类中定义一个静态方法addAll 用来添加多个集合的元素
*
*/
public class GenericsDemo1 {
public static void main(String[] args) {
ArrayList<String> list1 = new ArrayList<>();
ListUtil.addAll(list1,"aaa","bbb","ccc");
System.out.println(list1);
ArrayList<Integer> list2 = new ArrayList<>();
ListUtil.addAll(list2,1,2,3);
System.out.println(list2);
}
}- 泛型接口
泛型的继承和通配符
- 泛型不具备继承性 但是数据具备继承性
代码示例:
1 | import java.time.ZonedDateTime; |
- 笔记总结
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 niiish32x 's blog!