Java角色配置逻辑中jobTitle空指针异常的解决咨询
解决Java角色分配逻辑中的jobTitle空指针问题
你在布尔表达式里直接写if语句是语法错误,Java不允许这么干。要解决空指针,核心思路是先判断jobTitle不为null,再调用它的方法,利用&&的短路特性(前面条件为false时,后面的代码不会执行),这样既不破坏原有逻辑,又能避免空指针。
修改后的代码(两种写法)
写法1:直接在条件链中加入空检查
return "ACTIVE".equalsIgnoreCase(identity.getAttribute("status")) && !"attributeString1".equalsIgnoreCase(identity.getAttribute("company")) && identity.getAttribute("jobTitle") != null // 先判空,避免后续调用方法时触发空指针 && !"attributeString2".equalsIgnoreCase(identity.getAttribute("jobTitle")) && identity.getAttribute("jobTitle").contains("Nurse");
写法2:提取jobTitle变量,减少重复调用(更推荐)
String jobTitle = identity.getAttribute("jobTitle"); return "ACTIVE".equalsIgnoreCase(identity.getAttribute("status")) && !"attributeString1".equalsIgnoreCase(identity.getAttribute("company")) && jobTitle != null && !"attributeString2".equalsIgnoreCase(jobTitle) && jobTitle.contains("Nurse");
关键说明
- 空检查必须放在所有涉及
jobTitle的条件最前面:一旦jobTitle为null,&&后面的equalsIgnoreCase和contains都会被短路跳过,彻底避免空指针异常。 - 完全保留原有业务逻辑:只有当
status为ACTIVE、company不是attributeString1、jobTitle不为null且不是attributeString2、同时jobTitle包含"Nurse"时,才返回true分配角色。
内容的提问来源于stack exchange,提问作者Cole
相关产品推荐
相关产品推荐

