Я пытаюсь использовать IntelliJ Structural Search and Replace для перегрузки набора методов установки Optional
вариантами. При этом необходимо учитывать, что целевое значение может быть примитивным (например, от boolean
до Optional<Boolean>
). Вот основная часть преобразования:
Поиск:
public static void set($BType$ $BName$, $VType$ $VName$) {
$body$; // 0 - infinity
}
Замена:
public static void set($BType$ $BName$, java.util.Optional<$VTypeMightBeBoxed$> $VName$) {
$VName$.ifPresent(v -> set($BName$, v));
}
public static void set($BType$ $BName$, $VType$ $VName$) {
$body$;
}
Я немного застрял в скрипте PSI Groovy, необходимом для генерации $vTypeMightBeBoxed
PS. Это в основном вызвано полным отсутствием помощи редактора при добавлении этих скриптов! Не то, что ожидается от Jetbrains!
Optional<Boolean>
, должно быть, да / нет / может быть? Есть ли у вас шанс использовать вместо этого более точный enum-type с тремя вариантами? - person Amadán   schedule 03.02.2020boolean
может бытьint
,int[]
,String
,List<String>
илиMyClass
. Речь идет об использовании SSR для слепого добавления альтернативных методов установки, которые принимают Optionals, а не для неприятной логики с тремя состояниями. - person drekbour   schedule 03.02.2020