私はそれが存在する場合に取得したいjavaオプションのオブジェクトを持っています。明白なコードはここにある:Javaオプション現在の場合取得
JsonGenerator gen;
if(value.isPresent()) {
gen.writeObject(value.get());
}
しかし、私はifPresent
方法で1行にそれを蒸気管路できるかどうかを確認したいです。私はそれが存在しない場合は、まったく書きたくない。私はこのようなものを試した:
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
@リチャードHaはいあなたのメソッドがチェック例外をスローした場合は、それをキャッチして未確認の例外を再スローする必要があります。 – Tunaki
完璧な、これは働いた。ありがとう!! – Richard