Type接口解读

Type接口解读

一、简介

Type是java语言所有类型公共的父接口,这里基于源码对Type接口及子类和子接口进行解读。

二、Type定义

2.1 Type包含的类型

Type是java中所有类型的父接口,具体类型如下:

  • raw types:原始类型,如:Class;
  • parameterized types:参数化类型,如:List;
  • array types: 数组类型,如:int[];
  • type varialbes:类型变量,如:List或者 T,这里T就是类型变量;
  • primitive types:基本类型,如:int;
2.2 Type定义
package java.lang.reflect;
public interface Type {
   
    //返回类型描述
    default String getTypeName() {
   
        return toString();
    }
}
2.3 Type类图

Type主要有1个实现类和4个子接口,类图定义如下:

三、Type子接口

Type主要有4个子接口和1个直接实现类。直接实现类为原始类型(raw types)Class,这在另一篇博客中有介绍,在此略过。
这里主要对4个子接口进行介绍,即:ParameterizedType、TypeVariable、GenericArrayType、WildcardType。

3.1 ParameterizedType

ParameterizedType表示参数化类型,如List,接口定义如下:

package java.lang.reflect;
public interface ParameterizedType extends Type {
   
    //返回当前Type的实际类型参数数组,没有则返回数组为空
    Type[] getActualTypeArguments();

    //返回当前Type的原始类型,如List<String>的原始类型List
    Type getRawType();

    //返回拥有当前Type的Type(即当前type是结果Type的1个成员)
    Type getOwnerType();
}

示例如下:

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import static com.sun.jmx.mbeanserver.Util.cast;

public class ParameterizedTypeStudy {
   
    public static void main(String[] args) {
   
        //获取Stu的父泛型类型
        ParameterizedType parameterizedType = (ParameterizedType) Stu.class.getGenericSuperclass();

        //获取泛型中实际类型参数数组
        Type[] actualTypeArguments = parameterizedType.getActualTypeArguments();
        //将数组中类型参数转为实际类型
        Class<Element> elementClazz = cast(actualTypeArguments[0]);

        //获取泛型本身的实际类型Person
        Type rawType = parameterizedType.getRawType();
        Class<Person> personClazz = cas
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值