尝试映射日期->日历时遇到了InstantiationException。
简单测试如下:
@Test
public void testConversion()
{
GregorianCalendar cal = new GregorianCalendar(2009, 2, 3);
Date sourceValue = cal.getTime();
DozerBeanMapper mapper = new DozerBeanMapper();
Object result = mapper.map(sourceValue, Calendar.class);
}
根据docs,开箱即用地支持此功能(即使Calendar是抽象的)。任何人都对此有经验并能够指出我做错了什么?
最佳答案
你是对的。这将引发InstantionException
(我认为这是推土机中的一个错误。您是否会将其归档在他们的错误跟踪系统中?)。
然而。当您转换日期日历值不在根级别时,它可以工作。此测试对我有效(推土机5.1):
public static class Source {
private Date value;
public void setValue(Date value) {
this.value = value;
}
public Date getValue() {
return value;
}
}
public static class Target {
private Calendar value;
public void setValue(Calendar value) {
this.value = value;
}
public Calendar getValue() {
return value;
}
}
@Test
public void testConversion()
{
final GregorianCalendar cal = new GregorianCalendar(2009, 2, 3);
Source source = new Source(){{ setValue(cal.getTime());}};
DozerBeanMapper mapper = new DozerBeanMapper();
Target result = (Target) mapper.map(source, Target.class);
assertEquals(cal.getTimeInMillis(), result.getValue().getTimeInMillis());
}
关于java - 推土机InstantiationException映射Calendar类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1391210/