Почему Intellij idea настаивает на применении unnamed variables?

В Java 22 появилась возможность назвать неиспользуемую переменную нижним подчёркиванием (JEP 456).

У меня есть такая строчка:

go.addActionListener(e -> ui.setVisible(false));

И теперь среда разработки выдаёт предупреждение:

Parameter 'e' is never used

С предложением заменить e на _:

go.addActionListener(_ -> ui.setVisible(false));

Стоит ли так делать? Каков смысл этого? По мне так когда видишь это, то смотришь и несколько секунд не можешь понять, что это такое вообще...


Ответы (1 шт):

Автор решения: Зонтик

Использовать ли unnamed variables – дело вкуса. Задумка была в том, чтобы можно было показать намерение не использовать переменную. Это может иметь смысл, если есть какой-нибудь длинный foreach, например, где видно далеко не сразу, что переменная нигде не понадобилась.

Правда среда предлагает это делать везде, что не всем может понравиться. В данном случае, по моему сугубо личному мнению, нижнее подчёркивание выглядит коряво. Но когда я попробовал отключить проверку (нажал disable inspection), отключилась проверка обычных бесполезных переменных, созданных случайно, например в коде ниже:

public void doSomthing() {
    int x = 3; //Переменная не используется и была создана по ошибке
    Foo foo = new Foo();
    foo.bar();
    foo.baz();
}

Поэтому в данном случае пришлось просто подавить предупреждение. Нажимаем правой кнопкой мыши по предупреждению -> Show quick-fixes -> ... и выбираем suppres for statement, либо suppress for statement with comment.

Скриншот:

скриншот

→ Ссылка