我问了一个无关的问题,其中有这样的代码:
public boolean equals(Object obj)
{
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
// Check property values
}
我收到了一条评论,声称这不是最优解,而且应该这样做(如果我理解正确):
public boolean equals(Object obj)
{
if (this == obj)
return true;
else if (obj == null)
return false;
else if (getClass() != obj.getClass())
return false;
// Check property values
}
由于有return语句,我真的看不出为什么其中任何一种方法应该比其他方法更有效或更快。根据我所见,对于某个对象,两种方法都必须进行相同数量的检查。而且由于存在return语句,任何一种情况下都不会运行额外的代码。
我是否漏了什么?这里有什么问题吗?是否存在某些编译器优化或其他操作?
我知道这是微小的优化,无论如何我最终可能都会坚持使用第一种方式,因为我认为在同一位置放置所有if语句看起来更清晰。但我忍不住好奇!