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