我面临一个编写如下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异常

10-06 15:24