判断是否是简单类型
使用Spring中的BeanUtils,可以自行查看源码。
Boolean isSimpleType = BeanUtils.isSimpleValueType(value.getClass());
实际应用
private void resolveKeyNames(Object obj, List<String> headerNames,
List<String> 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) {
....
}