简单的问题,这是使用equals
正确的方式,也提供了答案背后的推理。java中equals方法的正确用法是什么?
"Delta".equals(type)
或
type.equals("Delta")
简单的问题,这是使用equals
正确的方式,也提供了答案背后的推理。java中equals方法的正确用法是什么?
"Delta".equals(type)
或
type.equals("Delta")
通常
"Delta".equals(type)
是有利的,因为它是不可能的抛出NullPointerException
。也就是说,另一种方式不是“不正确的”,因为它与Java语言规范没有错误;然而,如果(type == null)
为真,那么它容易发生故障。
术语“最佳实践”用于区分更好的选择与正确但较差的选择。在这种情况下,"Delta".equals(type)
是一种最佳做法,以避免处理空指针引用所需的不必要的守护代码。
+1好点... – Rachel 2012-04-17 16:06:45
我不同意这是最佳做法。最佳做法是尽可能让代码尽可能易读,第二个版本比第一个更好地表达意图。它更安全但更“怪异”。 – Puce 2012-04-17 16:18:05
可读性不是视觉呈现的问题,而是该呈现是否表达干净的操作,没有误导的上下文。 'X + 1'和'1 + X'都具有同等可读性,即使大多数人会先选择'X + 1'。在这种情况下,两个表达式都是“Object equals Object”,但表达式的一个排序可以防止程序崩溃。两者都没有通过_clever optimization_隐藏正在发生的事情。最后,请记住__readable代码在操作代码中是次要的,即使是代码质量的专家,他们也不会选择错误。 – 2012-04-17 16:32:19
两者同样好。第一个保证你不会解引用null。 – duffymo 2012-04-17 16:02:33