我有两个类:AbstractMailingDirections
和 DirectionLoad
。两者都有一个复制构造函数,如下所示:
public AbstractMailingDirections(AbstractMailingDirections toCopy) {
this.message = toCopy.message;
this.defaultDirection = new DirectionLoad(toCopy.defaultDirection);
for (final DirectionLoad dls : toCopy.directionLoads) {
this.directionLoads.add(new DirectionLoad(dls));
}
}
和
public DirectionLoad(DirectionLoad toCopy) {
this.direction = toCopy.direction;
this.transportationContract = toCopy.transportationContract;
this.pickUpTime = toCopy.pickUpTime;
this.acceptanceTime = toCopy.acceptanceTime;
this.acceptanceLocation = toCopy.acceptanceLocation;
this.information = toCopy.information;
}
现在,当我调用 MailingDirections
复制构造函数(它只是 super(toCopy)
)时,我有时无法获得 defaultDirection
的字段> 复制。或者不是全部。使用 Eclipse 调试器甚至更奇怪:
在这里,我点击了要复制的 AbstractMailingDirections
。查看 defaultDirection.acceptanceTime
如何在 toString
打印中显示为 17:00,但在字段列表中显示为 null
。如果我单击 defaultDirection,它的 toString
打印会将 acceptanceTime
字段显示为 null
。
这让我抓狂。任何想法可能是什么原因造成的?
最佳答案
这些是 Hibernate 实体(或 JPA 或类似实体)吗?在那种情况下,访问字段可能会阻止延迟加载魔法,而通过 getter 访问它可能会修复它。
关于java - 奇怪的复制构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16212151/