Spring 工具類之基本元素判斷
實際業務開發中偶爾會遇到判斷一個對象是否爲基本數據類型,除了咱們自老老實實的本身寫以外,也能夠藉助 Spring 的 BeanUtils 工具類來實現java
// Java基本數據類型及包裝類型判斷 org.springframework.util.ClassUtils#isPrimitiveOrWrapper // 擴展的基本類型判斷 org.springframework.beans.BeanUtils#isSimpleProperty
<!-- more -->git
這兩個工具類的實現都比較清晰,源碼看一下,可能比咱們本身實現要優雅不少github
基本類型斷定:ClassUtils
spring
public static boolean isPrimitiveOrWrapper(Class<?> clazz) { Assert.notNull(clazz, "Class must not be null"); return (clazz.isPrimitive() || isPrimitiveWrapper(clazz)); }
注意:非包裝類型,直接使用class.isPrimitive()
原生的 jdk 方法便可app
包裝類型,則實現使用 Map 來初始化斷定工具
private static final Map<Class<?>, Class<?>> primitiveWrapperTypeMap = new IdentityHashMap<>(8); static { primitiveWrapperTypeMap.put(Boolean.class, boolean.class); primitiveWrapperTypeMap.put(Byte.class, byte.class); primitiveWrapperTypeMap.put(Character.class, char.class); primitiveWrapperTypeMap.put(Double.class, double.class); primitiveWrapperTypeMap.put(Float.class, float.class); primitiveWrapperTypeMap.put(Integer.class, int.class); primitiveWrapperTypeMap.put(Long.class, long.class); primitiveWrapperTypeMap.put(Short.class, short.class); primitiveWrapperTypeMap.put(Void.class, void.class); } public static boolean isPrimitiveWrapper(Class<?> clazz) { Assert.notNull(clazz, "Class must not be null"); return primitiveWrapperTypeMap.containsKey(clazz); }
這裏很是有意思的一個點是這個 Map 容器選擇了IdentityHashMap
,這個又是什麼東西呢?學習
下篇博文仔細擼一下它spa
一灰灰的我的博客,記錄全部學習和工做中的博文,歡迎你們前去逛逛code
盡信書則不如,以上內容,純屬一家之言,因我的能力有限,不免有疏漏和錯誤之處,如發現 bug 或者有更好的建議,歡迎批評指正,不吝感激對象
一灰灰 blog