私の構造のこの単純化を考えると:
public class Order
{
public String firstName;
public Optional<PaymentInfo> paymentInfo;
}
public class PaymentInfo
{
public String billingAddress;
public int totalAmount;
}
このクラスにマップしたい:
public class SimpleOrder
{
public string firstName;
public Optional<String> billingAddress;
}
billingAddress
オプションに値がある場合にのみマップする方法がわかりません。私は次のようなことを考えていました:
private static Condition<?, ?> optionalHasValue =
(MappingContext<Optional<PaymentInfo>, String> context)
-> context.getSource().isPresent();
private static class OrderMap extends PropertyMap<Order, SimpleOrder>
{
@Override
protected void configure()
{
map(source.firstName, destination.firstName);
when(optionalHasValue)
.map(source.paymentInfo.get().billingAddress, destination.billingAddress);
}
}
しかし、これは「最終型 java.util.Optional をマップできません。」というエラーで失敗します。Optional のマッピングに関するこの質問を見ましたが、別の問題についてのようです。