O processo populacional é duplo e ortogonal até certo ponto. Principalmente, você já declarou o comportamento correto. O construtor é invocado para criar uma instância de objeto. Os valores dos parâmetros são recuperados do
DBObject
read e pode causar uma criação recursiva de objetos no caso de você entregar objetos complexos no construtor que precisam ser desempacotados de um DBObject
aninhado . A próxima etapa é que seus campos persistentes sejam preenchidos. A única diferença no seu caso para o caso com um construtor padrão é que lembramos os valores de campo que você entregou ao construtor e não os preenchemos novamente.
A
date
propriedade em seu exemplo ainda seria definida após a inicialização no construtor if o documento de origem do qual o objeto é materializado contém um valor para date
.