mapping - Dozer,自定义转换器上的 InstantiationException

标签 mapping converter dozer instantiationexception

我写了自己的客户转换器:

public class MyFancyCustomConverter extends DozerConverter<Integer, AnObject>
{
    public MyFancyCustomConverter(Class<Integer> prototypeA, Class<AnObject> prototypeB)
    {
        super(prototypeA, prototypeB);
    }

    @Override
    public AnObject convertTo(Integer source, AnObject destination)
    {
        // TODO: do something
        return null;
    }

    @Override
    public Integer convertFrom(AnObject source, Integer destination)
    {
        // TODO: do something
        return 0;
    }
}

还有我的 mapping.xml:
<mapping>
    <class-a>java.lang.Integer</class-a>
    <class-b>xyz.AnObject</class-b>
    <field custom-converter="xyz.MyFancyCustomConverter" custom-converter-param="hello">
      <a>this</a>
      <b key="my.key">this</b>
    </field>
</mapping>

但我得到这个异常(exception):

org.dozer.MappingException: java.lang.InstantiationException: xyz.MyFancyCustomConverter

知道我做错了什么吗?我想这是因为 MyFancyCustomConverter 没有默认转换器。但是我不能添加一个,因为 DozerConverter 没有一个......

最佳答案

public MyFancyCustomConverter(Class<Integer> prototypeA, Class<AnObject> prototypeB)
{
    super(prototypeA, prototypeB);
}

应该
public MyFancyCustomConverter()
{
    super(Integer.class, AnObject.class);
}

父类(super class)需要知道两个类的运行时类型,并且因为类型删除,需要传入一个类型 token 。

关于mapping - Dozer,自定义转换器上的 InstantiationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13473964/

相关文章:

java - Dozer - 基于条件的映射

php - Doctrine 2 multiple mappedBy?

java - Hibernate 映射 - 一张表中的两个映射

wpf - 带有转换器的模板绑定(bind) - 有什么问题?

pdf - PDF 文档的大小,如何使用 Spire.pdf 从毫米转换为像素?

php - 如何将数组转换为字符串

java - Dozer 映射参数计数不匹配的两个类

spring-boot - 与 spring-boot-devtools 相关的类加载器问题

Spring MVC 3.0 映射扩展

jpa - 在@ConstructorResult 的情况下放置@SqlResultSetMapping 的位置