Недавно закончил свой первый учебный проект на java. Искал код-ревью и узнал про существование статических анализаторов кода, вроде findbugs. Установил SpotBugs Eclipse Plugin и дал команду проверить свой проект. Он нашёл ошибку, которую я не понимаю.
На основе JButton я сделал круглую кнопку и для неё написал функцию назначения цвета (переменная класса color_normal), которая также назначает "обратный" цвет (color_pressed) для нажатого состояния.
public void setColor(Color c) {
color_normal = c.equals(null) ? Color.WHITE : c;
color_pressed = c.equals(null) ? Color.GRAY : new Color(255 - color_normal.getRed(), 255 - color_normal.getGreen(), 255 - color_normal.getBlue());
}
Отчёт о баге:
Bug: Call to equals(null) in guijcalc.ui.CircleButton.setColor(Color)
This method calls equals(Object), passing a null value as the argument. According to the contract of the equals() method, this call should always return false.
Rank: Scary (9), confidence: Normal
Pattern: EC_NULL_ARG
Type: EC, Category: CORRECTNESS (Correctness)
Почему использование .equals(null) плохо? Разве в данном контексте оно отличается от obj == null? Или может есть способ лучше?