В IntelliJ IDEA существует довольно удобный механизм для автоматической проверки (при необходимости — и преобразования) кода, под название Code inspections. Сложилось так, что мне понадобилось добавить к нему собственное поведение, служащее для замены способа преобразования непустого Optional в его значение внутри стрима (из стиля Java 8 в стиль Java 9+).
Не то, чтобы добавление пользовательских инспекций было трудным делом, но для памяти и в качестве небольшого примера решил описать этот процесс чуть подробней.
Итак, для начала надо попасть в само меню конфигурации инспекций, проще всего — по нажатию Ctrl+Alt+Shift+H -> Configure inspections
. Там можно добавить Replace Template («плюсик» в верхней части окна) со следующими настройками (актуальны для моего примера):
Затем, при желании, при помощи Edit Metadata можно добавить к шаблону некоторую дополнительную информацию:
И, в общем-то, на этом — всё! Несколько коротких действий экономят достаточно много времени впоследствии (ну и замечания по стилю не приходится исправлять, т.к. их предотвращает наличие инспекции с преобразованием).
Результат в действии выглядит следующим образом (gif с анимацией, запускается по клику):
Проверял на таком небольшом примере:
.filter(Optional::isPresent)
.map(Optional::get)
.count();
public static Optional<string> getOptional() {
return (new Random().nextInt() > 0) ? Optional.of("Yes") : Optional.empty();
}
И, в заключение, пара ссылок по теме создания Code inspections в idea:
- Более подробное описание создания Search Templates в idea
- Статья на хабре IntelliJ IDEA: Structural Search & Replace