Я хотел бы переписать этот код, используя Optional
-подобный код:
private Order buildOrder(String field) {
if (field.startsWith("-")) {
return Order.desc(field.substring(1));
}
else {
return Order.asc(field);
}
}
До сих пор я мог кодировать это:
private Order buildOrder(String field) {
return Optional.of(field.startsWith("-"))
.filter(Boolean::booleanValue)
.map(() -> field.substring(1)) <<<<1>>>>
.orElse(field)
.map(Order.desc(field.substring(1)))
.orElse(Order.asc(field));
}
Но я получаю эту ошибку компиляции на <<<<1>>>>
:
Подпись лямбда-выражения не соответствует сигнатуре метода функционального интерфейса apply(? super Boolean)
Несоответствие типов: невозможно преобразовать из String
в? extends U