栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 泛型

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 泛型

泛型出现的背景以及什么是泛型?

在jdk1.5之前,没有指定泛型类型的时候,我们可以向集合中添加任意元素的对象。在获取集合元素的过程中,需要我们明确的知道使用的元素的类型,否则会出现ClassCastException异常。这种异常是在运行时异常,在编译期发现不了这种异常。针对这种情况,JDK1.5推出新特性-泛型,泛型提供了编译期类型检测机制,可以在编译期检测到非法的数据类型 。泛型的本质就是参数化类型,也就是所操作的数据类型是一个参数。

泛型使用方式

泛型类

泛型接口

泛型方法

泛型类
class 类名 <泛型标识,泛型标识,...>{
	private 泛型标识 变量名;
}

常用的泛型标识

T、E、K、V

泛型类不允许是基本数据类型

因为基本数据类型没有父类,而泛型其实是属于Object

public class Generic {
    public static void main(String[] args) {
        AAA aaa = new AAA<>("2");
        System.out.println(aaa);
        AAA bbb = new AAA<>(true);
        System.out.println(bbb);
    }

}

@Data
@AllArgsConstructor
class AAA{
    private T key;
}
泛型父子类

子类的泛型需要和父类泛型一致

子类不是泛型类,父类是泛型类时,父类必须指定具体的泛型类型

泛型接口
inteeface 接口名称<泛型标识、泛型标识>{
	泛型标识 方法名();
}

实现类不是泛型类,接口必须指定具体的泛型类型

实现类也是泛型类,需要和接口的泛型类型一致

泛型方法

修饰符 <泛型列表> 返回值(){
	
}
类型通配符

用?代替具体的类型实参:无限通配符

类型通配符的上限

类/接口:?是子类只能传父类以及父类的子类

类型通配符的下限

​ 类/接口:?是父类,只能传?以及本身,不能传本身的子类

类型擦除

由于泛型是JDK1.5引出的,在这之前没有这个概念,泛型信息能够很好的兼容之前的代码。是因为:泛型信息只存在于编译期,在运行阶段,与泛型相关的信息会被擦除,称之为泛型擦除。

对于无限制通配符的擦除方式:

会被替换成Object

上下限通配符

​ 父类

桥接法

对于泛型多态出现的问题,JVM的解决方式是桥接方法

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/531093.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号