Dozer InstantiationException映射Calendar类

时间:2009-09-07 22:41:49

标签: java dozer

我在尝试映射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是抽象的)。任何人都有这方面的经验,能够指出我做错了什么?

2 个答案:

答案 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,则测试有效。