Java 小记

判断是否是简单类型
使用Spring中的BeanUtils,可以自行查看源码。

Boolean isSimpleType = BeanUtils.isSimpleValueType(value.getClass());

实际应用

private void resolveKeyNames(Object obj, List headerNames,
                                 List keys) throws IllegalAccessException {
        if (obj == null) return;
        Field[] fields = obj.getClass().getDeclaredFields();
        for (Field field : fields) {
            field.setAccessible(true);
            String fieldName = field.getName();
            Object value = field.get(obj);
            if (value != null) {
                // 判断value是否是简单类型
                Boolean isSimpleType = BeanUtils.isSimpleValueType(value.getClass());
                if (isSimpleType) {
                    String headerName = value.toString();
                    headerNames.add(headerName);
                    String key = CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, fieldName);
                    keys.add(key);
                }
            }
        }
    }

判断某个对象是否是某个类或其子类的实例
Class类中public native boolean isAssignableFrom(Class cls);

com.example.ParentClass.class.isAssignableFrom(ChildClass));

实际应用:java.sql.Date,java.sql.Timestamp都是java.util.Date的子类,
如果不是isAssignableFrom方法,可能需要如下写法:

if(value.getClass() == java.util.Date.class || value.getClass() == java.sql.Date.class || value.getClass() == java.sql.Timestamp.class) {
        ....
}

你可能感兴趣的:(Java 小记)