【小记】java中Class的一些方法

4 篇文章 0 订阅

平时开发中很多Class的方法都用不上,最近在看spring源码的时候,发现里面一些类型转换部分的代码(Converter等)用到很多Class的方法。经过自己尝试使用,这里将用途记录下,方便以后查阅:

1. getComponentType

获取数组(该class为数组)中实际存放的类型;如果该class不是数组,则直接返回null

System.out.println(new int[0].getClass().getComponentType()); // int
System.out.println(new String[0].getClass().getComponentType()); // class java.lang.String
System.out.println(String.class.getComponentType()); // null

2. isAssignableFrom

判断当前对象是否为传入参数的父类或者父接口

结合下面的例子进行理解:Number是Integer的父类,Object是Integer的父类,CharSequence是String的父接口

System.out.println(Number.class.isAssignableFrom(Integer.class)); // true
System.out.println(Object.class.isAssignableFrom(Integer.class)); // true
System.out.println(CharSequence.class.isAssignableFrom(String.class)); // true

3. getGenericInterfaces

获取当前class直接实现的接口,结果是Type类型的数组

举例:

e.g.1 ArrayList实现了List,RandomAccess,Cloneable,Serializable四个接口,调用后就返回这四个接口class构成的数组

对这个例子补充说明下:(1) 有一个接口比较特殊,List是带有泛型的,返回的是ParameterizedTypeImpl,而不是Class(Class和ParameterizedType都是Type的实现类)

(2)List又继承了Collection接口,但是不在返回结果之中,这就是前面说“直接实现的接口”的原因

e.g.2 Object没有实现任何接口,直接返回Class[0]

Type[] types = String.class.getGenericInterfaces();
Type[] types2 = ArrayList.class.getGenericInterfaces();
Type[] types3 = List.class.getGenericInterfaces();
Type[] types4 = Object.class.getGenericInterfaces();
System.out.println(types + "" + types2 + "" + types3 + "" + types4);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值