面试官:深入解析JAVA泛型和Type类型体系都不会,还在这谈精通,回家去吧!

本文详细探讨了JAVA的Type类型体系,包括泛型的概念、泛型类和泛型方法、类型擦除、参数化类型ParameterizedType、泛型的继承、泛型变量TypeVariable以及通配符WildcartType。特别强调了泛型数组GenericArrayType在Java中的应用,同时也阐述了Java泛型在实际编程中的使用限制和注意事项。
摘要由CSDN通过智能技术生成

1 JAVA的Type类型体系

image.png

先了解下java的Type类型体系,Type是所有类型(原生类型-Class、参数化类型-Parameterizedtype、数组类型-GenericArrayType、类型变量-TypeVariable、基本类型-Class)的共同接口;前两篇反射和注解讲到的Class就是Type的一实现类

Type下面又有四个子接口类ParameterizedType、TypeVariable、GenericArrayType、WildcardType

List表示泛型,E是TypeVariable类型,List则是ParameterizedType(参数化类型),List里的String称为实际参数类型

具体化泛型中的类型时,可以使用 ? extends 或 ? super来表示继承关系;如List<\? extends Data\>,而里面的 ? 称为通配符类型

GenericArrayType 表示一种元素类型是ParameterizedType(参数化类型)或者TypeVariable(类型变量)的数组类型,如T[] 或者 List[]

image.png

注解是JDK1.5才出现了的,为了表示被注解的类型的,加入AnnotatedElement类型,字面意思就是被注解的元素。JDK1.8又有了AnnotatedType将Type和被注解元素的概念关联起来。

AnnotatedType也有四个子接口,和Type的四个子接口一一对应,如:ParameterizedType类型被注解则被编译器解析成AnnotatedParameterizedType: @AnTest("list")List<String>list

2 泛型的概念

Java 泛型(generics)是JDK1.5中引入的一个新特性,其本质是参数化类型,解决不确定具体对象类型的问题;其所操作的数据类型被指定为一个参数(type parameter)这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值