Задал несвязанный вопрос , где у меня был такой код:
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 на одной позиции он выглядит чище. Но я ничего не могу с собой поделать; Мне любопытно!