【Class工具类】ClassUtils

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章