Вот мой метод.Булевский предикат (охрана) в Java Дополнительно
public PsiReference[] getReferencesByElement(@NotNull PsiElement element, @NotNull ProcessingContext context) {
if (isInRoutesFile(element)) {
return controllerName(element)
.flatMap(name -> findController(element.getProject(), name))
.map(controller -> new PsiReference[]{new RPsiElementReference(controller)})
.orElse(new PsiReference[0]);
}
return new PsiReference[0];
}
Теперь я хотел бы избежать пункт if
и каким-то образом построен предикат в Optional
цепи, чтобы не дублировать new PsiReference[0]
.
Для сравнения, Haskell имеет функцию guard
для этой цели. Вот как это будет выглядеть;
references :: Element -> Maybe [Reference]
references element = do
guard $ isInRoutesFile element
controllerName element >>= findController (getProject element) >>= Just . return . Reference
Этот код будет возвращать Nothing
, что эквивалентно Optional.empty()
в случае isInRoutesFile element
является False
. Каков способ Java иметь страж?
Исходный синтаксис: this this is isInRoutesFile. –