Я пытаюсь изучить и понять использование лямбда-выражений в Java.
Я написал функцию в классе, которая возвращает логический результат на основе значения Optional
с использованием лямбда-выражения.
private boolean isNullOrEmpty(Optional<String> value) {
boolean result;
value.ifPresent(v -> result = isEmptyOrWhitespace(v));
return result;
}
isEmptyOrWhitespace
- это простая функция, которую я определил в другом месте, чтобы проверить, является ли строка нулевой или имеет только пробел:
private boolean isEmptyOrWhitespace(String value) {
return value == null || value.trim().isEmpty();
Проблема в том, что я не могу скомпилировать это, потому что компилятор говорит
variable used in lambda should be final or effectively final
Для переменной result
. Я видел Java: назначьте переменную в lambda с похожей проблемой, но там была проблема с String, и было решено предварительно установить ее в null.
Я чувствую, что я рядом. Как я могу это исправить?