我用Java编写了下面的例程,我需要知道代码是否为空指针安全:
public class TRM_Fields {
public static String returnActualValue(String Staffing_Event,
String CurrentValue, String PriorValue) {
String returnValue;
returnValue = null;
if ("TRM".equalsIgnoreCase(Staffing_Event) && CurrentValue == null
&& PriorValue != null && !"".equalsIgnoreCase(PriorValue)) {
returnValue = PriorValue;
} else {
returnValue = CurrentValue;
}
return returnValue;
}
}
参数 Staffing_Event、CurrentValue 和 PriorValue 中的任何一个都可以为空。
如果它不是空指针安全的,我该怎么做才能实现这一点?
最佳答案
你的方法是安全的。您正确使用"constantString".equals(someObject)
以确保空安全比较。
其他一些评论:
您的方法很难阅读,因为您正在使用
TitleCase
对于 Java 变量,它们应该是camelCase
.您只有两个可能的返回值。所以你可以简化你的方法如下:
public static String returnActualValue(String staffingEvent, String currentValue, String priorValue) { if ("TRM".equalsIgnoreCase(staffingEvent) && currentValue == null && priorValue != null && !"".equalsIgnoreCase(priorValue)) { return priorValue; } else { return currentValue; } }
请注意
else
构造不是必需的,因此无论您包含该结构还是简单地具有return currentValue;
这都是风格问题.
关于java - 我可以从此例程中得到空指针异常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24302783/