java – 奇怪的复制构造函数

前端之家收集整理的这篇文章主要介绍了java – 奇怪的复制构造函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有两个类: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复制构造函数(它只是超级(toCopy))时,我有时不会复制defaultDirection的字段.或者不是全部.使用Eclipse调试器甚至更奇怪:

在这里,我点击了要复制的AbstractMailingDirections.请参阅toString打印中defaultDirection.acceptanceTime如何为17:00,但在字段列表中显示为null.如果我单击defaultDirection,它的toString print会将acceptanceTime字段显示为null.

这让我疯了.可能导致这种情况的任何想法?

解决方法

这些是Hibernate实体(或JPA或类似的)吗?在这种情况下,访问字段可能会制造延迟加载魔法和通过getter访问它可能会修复它.

猜你在找的Java相关文章