Proces zaludniania jest dwojaki i do pewnego stopnia ortogonalny. W większości już określiłeś prawidłowe zachowanie. Konstruktor jest wywoływany w celu utworzenia instancji obiektu. Wartości parametrów są pobierane z DBObject
czytać i może powodować rekurencyjne tworzenie obiektów w przypadku przekazania złożonych obiektów do konstruktora, które muszą być niezorganizowane z zagnieżdżonego DBObject
.
Następnym krokiem jest wypełnienie pól trwałych. Jedyną różnicą w twoim przypadku w stosunku do przypadku z domyślnym konstruktorem jest to, że pamiętamy wartości pól, które przekazałeś do konstruktora i nie wypełniamy ich ponownie.
date
właściwość w twoim przykładzie nadal będzie ustawiana po inicjalizacji w konstruktorze if dokument źródłowy, z którego zmaterializowany jest obiekt, zawiera wartość date
.