6
我有一個java可選對象,我只想知道它是否存在。這裏最明顯的代碼是:Java可選如果存在
JsonGenerator gen;
if(value.isPresent()) {
gen.writeObject(value.get());
}
但我想看看我是否能蒸汽管線,爲1號線與ifPresent
方法。如果它不存在,我不希望它寫。我試過這樣的事情:
gen.writeObject(value.ifPresent(a -> a));
但是,這顯然沒有奏效。有什麼辦法可以做我想做的事嗎?我在網上研究的所有內容僅顯示了使用ifPresent
與謂詞的方法調用。
編輯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