ClassUtils 介绍
一、官方API地址
官网地址:ClassUtils.html
二、ClassUtils 常用API
1.导入POM文件
这里使用的是:3.9 的版本,还是比较新的
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>
2.常用API介绍
方法名 | 方法介绍 |
---|---|
getName | 获取类名(包含包路径) |
getShortClassName | 获取类名(不包含包路径) |
getSimpleName | 获取类名(不包含包路径) |
getShortCanonicalName | 获取类名(不包含包路径) |
getPackageName | 获取包名 |
isAssignable | 判断是否可以转型 |
isInnerClass | 判断是否为内部类 |
isPrimitiveWrapper | 判断是否为包装类型 |
isPrimitiveOrWrapper | 判断是否为基础类型 |
wrapperToPrimitive | 基础类型和包装类型转换 |
wrapperToPrimitives | 基础类型和包装类型转换 |
convertClassesToClassNames | 类名字符串转 class类 |
convertClassNamesToClasses | class类转类名字符串 |
toClass | 对象转Class对象获取缩略名 |
getAbbreviatedName | 获取缩略名 |
getAllInterfaces | 获得所有实现的接口 |
getAllSuperclasses | 获取所有父类 |
hierarchy | 获取父类层级 |
3.API的使用
getName 获取类名(包含包路径)
// getName(final Class<?> cls)
System.out.println(ClassUtils.getName(String.class)); // java.lang.String
// getName(final Class<?> cls, final String valueIfNull)
System.out.println(ClassUtils.getName(null, "java.lang.Boolean")); // java.lang.Boolean
// getName(final Object object)
System.out.println(ClassUtils.getName(str)); // java.lang.String
// getName(final Class<?> cls, final String valueIfNull)
System.out.println(ClassUtils.getName(null, "java.lang.Boolean")); // java.lang.Boolean
getShortClassName 获取类名(不包含包路径)
getSimpleName 获取类名(不包含包路径)
getShortCanonicalName 获取类名(不包含包路径)
//获取simpleName
String simpleName1 = ClassUtils.getSimpleName(String.class);
System.out.println(simpleName1); // = String
//获取simpleName
String simpleName2 = ClassUtils.getSimpleName(null,"simpleName is null");
System.out.println(simpleName2); // = simpleName is null
//获取canonicalName
String canonicalName = ClassUtils.getShortCanonicalName(String.class);
System.out.println(canonicalName); // = String
//获取className
String className = ClassUtils.getShortClassName(String.class);
System.out.println(className); // = String
它们的区别:对于内部类区别就显示出来了,其他情况区别不大
//获取simpleName
String simpleName3 = ClassUtils.getSimpleName(Map.Entry.class);
System.out.println(simpleName3); // = Entry
//获取canonicalName
String canonicalName2 = ClassUtils.getShortCanonicalName(Map.Entry.class);
System.out.println(canonicalName2); // = Map.Entry
//获取className
String className2 = ClassUtils.getShortClassName(Map.Entry.class);
System.out.println(className2); // = Map.Entry
getPackageName(Class<?> cls) 获取包名
//获取包名
String packName = ClassUtils.getPackageName(String.class);
System.out.println(packName); // = java.lang
String packName2 = ClassUtils.getPackageName(Beans.class);
System.out.println(packName2); // = java.beans
//为空,默认返回第二个参数的值
String packName3 = ClassUtils.getPackageName(null,"the object is null");
System.out.println(packName3); // = the object is null
//传入参数为字符串
String packName4 = ClassUtils.getPackageName("java.lang.String");
System.out.println(packName4); // = java.lang
//获取规范名
String packName5 = ClassUtils.getPackageCanonicalName(String.class);
System.out.println(packName5); // = java.lang
isAssignable(Class<?> cls, Class<?> toClass) 判断是否为转型
isAssignable(Class<?> cls, Class<?> toClass, final boolean autoboxing)
判断是否为转型,autoboxing是否在原语和包装器之间使用隐式自动装箱/拆箱
System.out.println("判断是否可以转型.");
System.out.println(ClassUtils.isAssignable(Date.class, Object.class)); //= true
System.out.println(ClassUtils.isAssignable(Object.class, Date.class)); //=false
isInnerClass(Class<?> cls) 判断是否为内部类
System.out.println(ClassUtils.isInnerClass(Map.Entry.class)); // = ture
System.out.println(ClassUtils.isInnerClass(Object.class)); //= false
isPrimitiveWrapper(Class<?> type) 判断是否为包装类型
isPrimitiveOrWrapper(Class<?> type) 判断是否为基础类型
// wrapper类有(Boolean, Byte, Character, Short, Integer, Long, Double, Float).
System.out.println(ClassUtils.isPrimitiveWrapper(Integer.class)); // = ture
System.out.println(ClassUtils.isPrimitiveWrapper(Object.class)); // = false
System.out.println(ClassUtils.isPrimitiveWrapper(String.class)); // = false
System.out.println(ClassUtils.isPrimitiveWrapper(int.class)); // = false
System.out.println(ClassUtils.isPrimitiveOrWrapper(Integer.class)); // = ture
System.out.println(ClassUtils.isPrimitiveOrWrapper(Object.class)); // = false
System.out.println(ClassUtils.isPrimitiveOrWrapper(String.class)); // = false
System.out.println(ClassUtils.isPrimitiveOrWrapper(int.class)); // = true
wrapperToPrimitive(Class<?> cls) 基础类型和包装类型转换
wrapperToPrimitives(Class<?>… cls) 基础类型和包装类型转换
System.out.println(ClassUtils.wrapperToPrimitive(Integer.class)); // = int
convertClassesToClassNames(List<Class<?>> classes) 类名字符串转 class类
convertClassNamesToClasses(List classNames) class类转类名字符串
toClass(Object… array) 对象转Class对象获取缩略名
//类转化为class对象
Class[] classAry = ClassUtils.toClass(new String(),new Object());
System.out.println(ArrayUtils.toString(classAry));
// = {class java.lang.String,class java.lang.Object}
getAbbreviatedName(Class<?> cls,int len) 获取缩略名
getAbbreviatedName(String className,int len) 获取缩略名
//获取类的缩略名称
String abbreviatedName1 = ClassUtils.getAbbreviatedName(String.class, 5);
String abbreviatedName2 = ClassUtils.getAbbreviatedName(String.class, 10);
String abbreviatedName3 = ClassUtils.getAbbreviatedName(String.class, 3);
String abbreviatedName4 = ClassUtils.getAbbreviatedName(String.class, 20);
System.out.println(abbreviatedName1); // j.l.String
System.out.println(abbreviatedName2); // j.l.String
System.out.println(abbreviatedName3); // j.l.String
System.out.println(abbreviatedName4); // java.lang.String
getAllInterfaces(Class<?> cls) 获得所有实现的接口
//获得所有实现的接口
List<Class<?>> classAry = ClassUtils.getAllInterfaces(String.class);
System.out.println(ArrayUtils.toString(classAry));
// [interface java.io.Serializable, interface java.lang.Comparable, interface java.lang.CharSequence]
getAllSuperclasses(Class<?> cls) 获取所有父类
//获得所有的父类
List<Class<?>> classArray = ClassUtils.getAllSuperclasses(String.class);
System.out.println(ArrayUtils.toString(classArray));
//[class java.lang.Object]
hierarchy(Class<?> type) 获取父类层级
Iterator<Class<?>> myIterator = ClassUtils.hierarchy(ArrayList.class).iterator();
while(myIterator.hasNext()){
System.out.println(myIterator.next());
}
// class java.util.ArrayList
// class java.util.AbstractList
// class java.util.AbstractCollection
// class java.lang.Object