1

私の構造のこの単純化を考えると:

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 のマッピングに関するこの質問を見ましたが、別の問題についてのようです。

4

0 に答える 0