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;}
}
进行测试
@Testpublic 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属性进行操作
@Testpublic 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;}}
使用工具类进行判断:
@Testpublic 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属性不为空时:
@Testpublic 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中判断对象中某个属性是否为空相关推荐
- 判断对象的某些属性是否为空
背景:很多时候我们需要判断对象的某些属性中的值是否为空,然后进行操作,这里不需要整个的对象,只是需要获取对象中的某些属性进行判断,如果写很多的if进行判断,例如: if (StringUtils.is ...
- 判断对象内的 属性是否为空
看一下需求: 在接收前端传参的时候,如果没有传数据,那么会是所有的属性都为 null,这时候进行判断参数是否为空 就不能单纯的 使用 param == null 来判断了 import java.la ...
- 判断对象中属性值是否全为空
import java.lang.reflect.Field; /*** 判断对象中属性值是否全为空** @param object* @return*/public static boolean c ...
- java判断一个对象是否为空_Java中判断对象是否为空的方法的详解
首先来看一下工具StringUtils的判断方法: 一种是org.apache.commons.lang3包下的: 另一种是org.springframework.util包下的.这两种StringU ...
- php查询对象是否有某个属性可用,JavaScript 判断对象中是否有某属性的常用方法...
判断对象中是否有某属性的常见方式总结,不同的场景要使用不同的方式. 一.点( . )或者方括号( [ ] ) 通过点或者方括号可以获取对象的属性值,如果对象上不存在该属性,则会返回undefined. ...
- java 判断对象中所有属性都为空
/*** 判断对象中的属性是否全为null** @param o* @return 全为空返回true*/public boolean allFieldIsNULL(Object o) {try {f ...
- java怎么判断对象为空_java中怎么判断对象是否为空
java中判断对象是否为空的方法: 首先来看一下工具StringUtils的判断方法: 一种是org.apache.commons.lang3包下的:另一种是org.springframework.u ...
- js之删除对象属性的三种方法 判断对象中是否有某一属性的四种方法
js之删除对象属性的三种方法 & 判断对象中是否有某一属性的四种方法 示例 1.基础版 var a = { id: 18, age: 20, name: "zhangsan" ...
- java if equals_Java中判断对象是否相等的equals()方法使用教程
Object类中的equals方法用于检测一个对象是否等于另一个对象.在Object类中,这个方法判断两个对象是否具有相同的引用,如果两个对象具有相同的引用,它们一定是相等的.从这点上看,将其作为默认 ...
最新文章
- 在Ubuntu 14.04 64bit上安装批量图片处理器XnConvert
- IntelliJ IDEA 添加本地xsd文件
- 一大波数据来袭 网络桃色陷阱暗藏致命危机
- python对文件的读操作方法有哪些-Python中文件的读取和写入操作
- dedecms织梦专题节点列表内容怎么实现分页
- Python中的负索引是什么?
- c#启动EXE文件(简单的)
- 直播预告 | TCCI追问研讨会第二期:双向脑机接口如何实现?
- 简单的TensorFlow分类教程
- mapreduce分组统计_mongodb中使用mapreduce进行分组统计
- MYSQL5.7---ONLY_FULL_GROUP_BY 异常处理
- 年终感想——财务自由的程序员,你见过吗?
- 四川省盐业学校九五计算机,2020年四川省盐业学校招生录取分数线
- gitee添加成员_成员权限管理,到底能有多精细?
- Diagrams for Mac(原生流程图制作工具)
- CentOS镜像中替换安装镜像的小系统的内核方法
- 机器学习 --- 3. 贝叶斯怎么想?(转)
- 教材寻找 下载系列1
- 如何利用PyTorch实现一个Encoder-Decoder结构进行英法互译
- r5 5500参数 r5 5500有核显吗 锐龙r5 5500相当于i几