java判断对象中某个属性是否为空方法代码
问题:java对象接受从数据库查出来的数据时,对对象的某一属性进行操作,在操作属性中存储的数据中不对进行检查,会出现空指针异常的情况。
问题再现:新建一个实体类
public class Student { private Integer id; private String name; private String age; private String course; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getCourse() { return course; } public void setCourse(String course) { this.course = course; } }
进行测试
@Test public void test(){ //数据模拟 Student student = new Student(); student.setId(1); student.setName("张三"); student.setAge("12"); //这里不对course属性赋值 // student.setCourse("语文,数学,英语"); System.out.println(student.getId()); System.out.println(student.getName()); System.out.println(student.getAge()); System.out.println(student.getCourse()); }
输出内容:
1
张三
12
null
对course属性进行操作
@Test public void test(){ //数据模拟 Student student = new Student(); student.setId(1); student.setName("张三"); student.setAge("12"); //这里不对course属性赋值 // student.setCourse("语文,数学,英语"); System.out.println(student.getCourse().length()); }
这里就会报异常
通过这里看以看出,取出实体类中的数据是没问题的,但当我们对course属性进行操作时,就会包空指针异常。
解决问题思路:我们需要提前判断这个属性是否为空。
为了解决问题我们用到了反射,并把封装成了一个工具类
public class ObjectUtil { /** * 判断对象中部分属性值是否不为空 * * @param object 对象 * @param excludeFieldNames 选择校验的属性名称List集合 * @return */ public static boolean checkObjFieldsIsNotNull(Object object, List<String> excludeFieldNames) { if (null == object) { return false; } try { for (Field f : object.getClass().getDeclaredFields()) { f.setAccessible(true); if (excludeFieldNames.contains(f.getName()) && f.get(object) != null && StringUtils.isNotBlank(f.get(object).toString())) { return true; } } } catch (Exception e) { e.printStackTrace(); } return false; } }
使用工具类进行判断:
@Test public void test(){ //数据模拟 Student student = new Student(); student.setId(1); student.setName("张三"); student.setAge("12"); //这里不对course属性赋值 // student.setCourse("语文,数学,英语"); //当course属性为空时 System.out.println("执行开始"); if (ObjectUtil.checkObjFieldsIsNotNull(student,Arrays.asList("course"))){ System.out.println("执行"); System.out.println(student.getCourse().length()); } System.out.println("执行完毕"); }
输出结果:
从这里可以看出if条件为空,并没有执行,因为此时course属性为空,判断不成立。
当course属性不为空时:
@Test public void test(){ //数据模拟 Student student = new Student(); student.setId(1); student.setName("张三"); student.setAge("12"); student.setCourse("语文,数学,英语"); System.out.println("执行开始"); if (ObjectUtil.checkObjFieldsIsNotNull(student,Arrays.asList("course"))){ System.out.println("执行"); System.out.println(student.getCourse().length()); } System.out.println("执行完毕"); }
执行结果:
可以看出:当属性不为空时,判断为真。 此时我们就完成了对属性是否为空的判断。
总结
到此这篇关于java判断对象中某个属性是否为空的文章就介绍到这了,更多相关java判断对象属性为空内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
MyBatis 中 ${}和 #{}的正确使用方法(千万不要乱用)
这篇文章主要介绍了MyBatis 中 ${}和 #{}的正确使用方法,本文给大家提到了MyBatis 中 ${}和 #{}的区别,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-07-07Yml转properties文件工具类YmlUtils的详细过程(不用引任何插件和依赖)
这篇文章主要介绍了Yml转properties文件工具类YmlUtils(不用引任何插件和依赖),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2021-08-08Spring Security CsrfFilter过滤器用法实例
这篇文章主要介绍了Spring Security CsrfFilter过滤器用法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2019-11-11
最新评论