问题发现:
在走读业务代码过程中发现存在如下情况,大致可以推测,代码原本是希望通过判断属性声明类型来作不同的业务处理,但使用的是先getGenericType().toString()获取属性字符串,再根据字符删除判断
String type = field.getGenericType().toString();//1. 先获取属性类型
if ("class java.lang.Integer".equals(type)){
//2. 再根据类型字符串进行判断
Object o = field.get(t);
if (null != o){
//业务代码;
}
}
else if (type.contains("java.util.List")){
//业务代码;
}
这样做存在两个问题:
- 如果属性使用的int基本类型进行声明,则代码对基本类型的判断就是错误的,如int属性的getGenericType().toString()获得的就是