2025年java中判断对象中某个属性是否为空

java中判断对象中某个属性是否为空问题 java 对象接受从数据库查出来的数据时 对对象的某一属性进行操作 在操作属性中存储的数据中不对进行检查 会出现空指针异常 的情况 问题再现 新建一个实体类 public class Student private Integer id private String name private String age

大家好,我是讯享网,很高兴认识大家。

问题: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("执行完毕"); }

执行结果: 

可以看出:当属性不为空时,判断为真。 此时我们就完成了对属性是否为空的判断。

小讯
上一篇 2025-04-07 09:47
下一篇 2025-03-30 09:18

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/30292.html