2

Date -> Calendar をマッピングしようとすると、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 は抽象的ですが)。誰もがこれを経験し、私が間違っていることを指摘できますか?

4

2 に答える 2

2

あなたが正しいです。これによりスローInstantionExceptionされます (これは dozer のバグだと思います。バグ追跡システムにファイルしてくれませんか?)。

でも。ルート レベルではない Date <--> Calendar 値を変換すると機能します。このテストは私にとってはうまくいきます(dozer 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());
    }
于 2009-09-08T20:15:14.123 に答える
1

Calendar.class を GregorianCalendar.class に変更すると、テストが機能します。

于 2009-09-08T20:23:45.510 に答える