我面临一个编写如下Java代码的问题:
boolean isFoo(String maybeFoo){
//Return true if maybeFoo is equal to "Foo"
//Don't throw any exceptions.
}
我有两个选择:
1. return "Foo".equals(maybeFoo);
2. return maybeFoo==null?false:maybeFoo.equals("Foo");
我选择数字1,但是我不能给出数字2错误的原因。我对面试官说,这是我习惯使用强类型语言的习惯。但是他似乎不满意。
最佳答案
两者之间的区别正是您在2个选项中写的
"Foo".equals(maybeFoo);
是最常见的已实施检查,因为您不必担心null检查...(即使仅检查一项也是如此)
另一方面,这
maybeFoo.equals("Foo")
仅仅因为对空引用对象调用方法而将抛出NPE异常