Java编程思想-15泛型

来源:互联网 发布:java web 日志 编辑:程序博客网 时间:2024/06/06 06:29

一、概述

泛型:本质是参数化类型,即所操作的数据类型被指定为一个参数
优点:编译期检查类型安全、隐式自动类型强转、提高代码重用性
缺点:为了兼容新旧版本,Java泛型的实现有许多缺陷

二、底层实现

1、类型擦除

编译期间,所有的泛型信息都会被擦除掉
生成的字节码中,不包含泛型中的类型信息
ArrayList<String> aList=new ArrayList<String>();  ArrayList<Integer> bList=new ArrayList<Integer>();  aList.add("abc");  bList.add(123);  System.out.println(aList.getClass()==bList.getClass()); //true 

2、原始类型

类型擦除后,字节码中类型变量的真正类型
类型擦除后,字节码中类型变量,使用其限定类型替换(无限定的用Object)

3、类型擦除引起的问题

此处不展开...

三、使用泛型

1、泛型类、接口

//在类名后声明class Dao<T>{    //...}interface Api<E,T>{    //...}

2、泛型方法

//在返回值前声明public <E, T> T get(E e, T t) {    //...}

3、类型限定

通配符:? 表示未知类型上边界:? extends E可以接收E及其子类的对象下边界:? super E可以接收E及其父类的对象
0 0
原创粉丝点击