如果我尝试访问空值,为什么 Java 会频繁抛出空指针异常,而 Objective C 却不会?
Java:
public class SubscribeEmailActivity {
String status;
public static void main(String[] args){
if(Status.equals(null)||status.equals(""){
// i am getting error here
}
}
}
Objective-C :
//in .h file
NSString *exp;
//in .m file
if ([exp isEqualToString:NULL] ||[exp isEqualToString:@""])
{
// i am not getting any error
}
最佳答案
问题出在你用java求值,应该是:
if(status == null||status.equals("")) {
//Do not try to dereference status....
应该注意的是,这只适用于 Java 和其他语言,允许在逻辑评估中使用捷径。在这种情况下,一些简单的 boolean 代数:
true || ??? => true
一旦第一项的计算结果为真,我们就知道 OR 条件也将计算为真,因此无需检查第二项。
此外,您可以使用 Apache Commons isEmpty()
或自己滚动:
public static final boolean isEmpty(String arg0) {
if(arg0 == null) return true;
if(arg0.trim().length() < 1) return true;
return false;
}
显示的版本类似于 Apache Commons 中的 isBlank
。
关于在空指针异常的情况下,Java 与 Objective C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18127482/