Я хочу сопоставить источник, который имеет только конструктор, который принимает 3 параметра. Я получаю следующее сообщение об ошибке:Использование Modelmapper, как мне сопоставить класс без конструктора default/no-args?
Failed to instantiate instance of destination com.novasol.bookingflow.api.entities.order.Rate. Ensure that com.novasol.bookingflow.api.entities.order.Rate has a non-private no-argument constructor.
Это работает, когда я вставляю конструктор без ARGS в пункте назначения источника, но это может привести к неправильному использованию класса, поэтому я предпочел бы не о том, что.
Я попытался с помощью конвертера, но это не похоже на работу:
Converter<RateDTO, Rate> rateConverter = new AbstractConverter<RateDTO, Rate>() {
protected Rate convert(RateDTO source) {
CurrencyAndAmount price = new CurrencyAndAmount(source.getPrice().getCurrencyCode(), source.getPrice().getAmount());
Rate rate = new Rate(price, source.getPaymentDate(), source.getPaymentId());
return rate;
}
};
Можно ли сказать modelmapper, как не на карту к месту назначения с нет нет-арг конструктор?
Вы также можете использовать [Provider] (http://modelmapper.org/user-manual/providers/), чтобы создать экземпляр класса назначения. – Jonathan
Привет, Джонатан, да, вот что я в итоге сделал, см. Мой собственный ответ. –
@Lars: Я столкнулся с той же проблемой, что и вы, но потом попробовал частный no-args ctor (хотя в сообщении говорится иначе). ModelMapper способен читать частный ctor (v0.7.6), и поэтому вы по-прежнему защищены от нежелательной конкретизации/использования вашего класса. Фактически, путем активного размещения частного no-args ctor вы можете (в частности, путем комментирования) заставлять своих коллег осознавать, что вы разработали этот класс, чтобы не выставлять no-args ctor. – Cerbenus