java 反射获取数组_java学习-反射-数组

/** Copyright (c) 2020, guoxing, Co,. Ltd. All Rights Reserved*/

packagecom.xingguo.reflection.application;importlombok.extern.slf4j.Slf4j;importjava.lang.reflect.ParameterizedType;importjava.lang.reflect.Type;importjava.util.stream.Stream;/*** ArrayDemo

* 数组类型数据

*

*@authorguoxing

* @date 2020/11/20 9:15 AM

*@since

*/@Slf4jpublic classArrayDemo {public static voidmain(String[] args) {/*** 0: iconst_1

* 1: newarray int

* 3: astore_1

* 可以看到对于 " new int[1]" 这个操作主要是通过 newarray 指令实现*/

//对于 数组 作为特殊的java 原生对象,其具体实现实际是由 jvm 指令代替

int[] iArray = new int[1];

Class extends int[]> aClass =iArray.getClass();//判断当前类型是否为数组类型

boolean array =aClass.isArray();

log.info("当前类{}是否为数组类型:{}", aClass, array ? "是" : "否");//获取当前类的继承类

Type genericSuperclass =aClass.getGenericSuperclass();

log.info("{}", genericSuperclass.getTypeName());//获取实现的接口

Type[] genericInterfaces =aClass.getGenericInterfaces();

Stream.of(genericInterfaces)

.forEach(type->{//泛型类型

if (type instanceofParameterizedType) {

ParameterizedType parameterizedType=(ParameterizedType) type;

Type rawType=parameterizedType.getRawType();

log.info("{}", rawType);

Type[] actualTypeArguments=parameterizedType.getActualTypeArguments();

Stream.of(actualTypeArguments)

.forEach(t->{

log.info("{}", t);

});

}else{//普通类型

log.info("{}", type);

}

});//获取当前数组的元素类型

Class> componentType =aClass.getComponentType();

log.info("{},{}", componentType, componentType.isPrimitive());

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值