Можно ли каким-либо образом переместить все значения полей из одного объекта в другой без с использованием отражения? Итак, что я хочу сделать что-то вроде этого:Перемещение всех полей от одного объекта в другой
public class BetterThing extends Thing implements IBetterObject {
public BetterThing(Thing t) {
super();
t.evolve(this);
}
}
Таким образом, метод evolve
будет эволюционировать одного класса к другому. Аргументом будет <? extends <? extends T>>
, где T
- это класс объекта, вы вызываете evolve
.
Я знаю, что могу сделать это с отражением, но отражения отражают производительность. В этом случае класс Thing
находится во внешнем API, и нет метода, который бы скопировал все необходимые поля из него на другой объект.
Ваш выбор: (a) отражение или (b) явное назначение членов. –
... или переключение с наследования на композицию. – aioobe
, если вы говорите, что Thing находится во внешнем API, я думаю, что в нем нет метода эволюции. – AdamSkywalker