Mam dwie klasy: AbstractMailingDirections
i DirectionLoad
. Obie mają konstruktor kopiujący następująco:Konstruktor dziwnego egzemplarza
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));
}
}
i
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;
}
Teraz gdy zgłoszę konstruktora MailingDirections
kopiowania (który jest tylko super(toCopy)
) czasami nie dostać pól z defaultDirection
kopiowane. A może nie wszystkie. A korzystanie z debuggera Eclipse jest jeszcze dziwniejsze:
Tutaj kliknąłem na plik AbstractMailingDirections
, który ma zostać skopiowany. Zobacz, jak defaultDirection.acceptanceTime
ma 17:00 na wydruku toString
, ale w wykazie jest wyświetlany null
. Jeśli kliknę przycisk domyślny, zostanie wyświetlony komunikat toString
, który pokaże pole acceptanceTime
jako null
.
To doprowadza mnie do szału. Jakieś pomysły, które mogą być przyczyną tego?
Byłoby pomocne, gdyby opublikowano [SSCCE] (http://sscce.org), który odtwarza zachowanie. – npe
Czy są to elementy hibernacji (lub JPA lub podobne)? W takim przypadku dostęp do pól może zahamować magię leniwego ładowania, a dostęp do niej za pomocą modułów pobierających może ją naprawić. –
Cholera. @JensSchauder, po prostu może to być. – vertti