【问题标题】:Dozer map to a library class which does not have a default constructorDozer 映射到没有默认构造函数的库类
【发布时间】:2021-05-24 20:13:48
【问题描述】:

我正在尝试使用 Dozer 映射到具有定义为接口的字段的目标库类,但出现错误:-

Caused by: java.lang.NoSuchMethodException: 
.<init>()
at java.base/java.lang.Class.getConstructor0(Class.java:3508) ~[na:na]
at java.base/java.lang.Class.getDeclaredConstructor(Class.java:2711) 

源类有一个匹配的字段,该字段与该目标接口的实现之一具有完全相同的结构。 我已经搜索过,但找不到任何合适的 sultionsles。 请问有人能给我举个例子吗。 提前致谢。

【问题讨论】:

    标签: java dozer


    【解决方案1】:

    Dozer 并不隐式知道要应用于定义为接口的字段的具体类。映射需要包含有关如何映射该字段的信息。
    一种选择是“通过引用复制”,它将从源中获取字段的实例并将其设置为目标上字段的值。源和目标字段实例必须兼容,在这种情况下,源字段需要是接口的实现。
    另一种选择是告诉 Dozer 如何构造接口的实例。这可以通过字段映射上的 BeanFactory 来完成。当映射字段以获取目标字段的实例而不是尝试调用该类的构造函数时,Dozer 将调用 BeanFactory。 第三种选择是为此字段创建自定义转换器并在映射中指定使用自定义转换器。自定义转换器将实现目标字段实例的构造以及该目标字段实例的填充。请注意,映射器感知的自定义转换器可以回调到 Dozer 以映射该目标实例的字段。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-25
      • 1970-01-01
      • 1970-01-01
      • 2022-01-01
      • 2023-03-20
      • 2016-07-18
      • 1970-01-01
      • 2015-07-07
      相关资源
      最近更新 更多