gpt4 book ai didi

java - 在 Dozer 中映射具有抽象类型成员的类时出现 InstantiationException

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:06:02 25 4
gpt4 key购买 nike

我是推土机的新手,我正在尝试为 ClassA 和 ClassB 创建 map

public class ClassA {
ClassC c;

public ClassC getC() {
return c;
}
public void setC(ClassC c) {
this.c = c;
}
}

public class ClassB {
private String x;

public String getX() {
return x;
}
public void setX(String x) {
this.x = x;
}
}


public abstract class ClassC {
private String x;

public String getX() {
return x;
}
public void setX(String x) {
this.x = x;
}
}


public class ClassD extends ClassC {
}

我尝试了下面的映射

<mapping>
<class-a>ClassA</class-a>
<class-b>ClassB</class-b>

<field>
<a>c.x</a>
<b>x</b>
</field>
<mapping>

classC 是抽象类,ClassD 是具体类。当我映射 A->B 时没有问题,但是当我映射 B->A 时,我得到 InstantiationException。我怀疑推土机正在尝试实例化抽象类 classC。任何属性告诉推土机使用 ClassD?请帮忙。

[EDIT1] - 添加了完整的类声明。

最佳答案

您添加的这条评论是对的。

"classC is an abstract class and ClassD is a concrete. When I map A->B there is no problem but when I map B->A, I'm getting InstantiationException. I suspect that the dozer is trying to instantiate abstract class classC."

这有点摸不着头脑,但在阅读推土机支持页面和这个问题后我会尝试:How to map a field with type as an abstract class with dozer? .我可能不是 100% 正确,但我很确定它需要遵循这些思路。

<mapping>
<class-a>ClassA</class-a>
<class-b>ClassB</class-b>

<field>
<a>c.x</a>
<b>x</b>
<a-hint>ClassD</a-hint>
</field>
<mapping>

关于java - 在 Dozer 中映射具有抽象类型成员的类时出现 InstantiationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21378017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com