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