B>Не понял зачем конструктор к этой задаче приплетать. Значения можно писать через сеттеры (Introspector, BeanUtils, Reflection) и даже напрямую в поля (Reflection + setAccessible(true)).
через сеттеры придется вызывать для каждого поля, один черт громоздко.
в c++ Это бы делалось тривиально через дефолтный конструктор копирования , который бы просто скопировал бинарную часть класса поле в поле