У меня есть необязательный объект java, который я хочу получить, только если он присутствует. Очевидные коды здесь:Java Дополнительно Get if Present
JsonGenerator gen;
if(value.isPresent()) {
gen.writeObject(value.get());
}
Но я хочу, чтобы увидеть, если я могу паропровод, что на 1 линию с помощью метода ifPresent
. Я не хочу, чтобы он писал вообще, если его нет. Я пробовал что-то вроде этого:
gen.writeObject(value.ifPresent(a -> a));
Но это явно не сработало. Есть ли способ сделать то, что я хочу? Все, что я исследовал в Интернете, показывает только использование ifPresent
с вызовом метода для предиката.
Edit 1: Я попробовал решение Tunaki, но я получаю следующее сообщение об ошибке:
Error:(25, 46) java: incompatible thrown types java.io.IOException in method reference
Вот мой весь блок кода:
public class FooSerializer extends JsonSerializer<Foo> {
@Override
public void serialize(Foo value,
JsonGenerator gen,
SerializerProvider serializers) throws IOException {
value.getFooA().ifPresent(gen::writeObject);
}
}
Я даже пробовал:
public class FooSerializer extends JsonSerializer<Foo> {
@Override
public void serialize(Foo value,
JsonGenerator gen,
SerializerProvider serializers) throws IOException {
try {
value.getContactInfo().ifPresent(gen::writeObject);
} catch(IOException e) {
throw new UncheckedIOException(e);
}
}
}
Но это все равно дает мне Ошибка.
Я попробовал ваше решение и получил ошибку , Я сделал редактирование на свой пост. – Richard
@ Richard Ha да, если ваш метод выбрасывает проверенное исключение, вам нужно поймать его и сбросить непроверенный (или сделать что-то еще). – Tunaki
отлично, это сработало. Благодаря!! – Richard