我在尝试映射Date时遇到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是抽象的)。任何人都有这方面的经验,能够指出我做错了什么?
答案 0 :(得分:2)
你是对的。抛出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());
}
答案 1 :(得分:0)
如果您将Calendar.class更改为GregorianCalendar.class,则测试有效。