Ich versuche, alle Eigenschaften von einer Bohne in eine andere zu kopieren:Effiziente Möglichkeit, alle Bean-Eigenschaften in eine andere Bohne zu kopieren
public void copy(MyBean bean){
setPropertyA(bean.getPropertyA());
setPropertyB(bean.getPropertyB());
[..]
}
Dies ist fehleranfällig und viel zu schreiben, wenn Sie eine Bohne mit vielen haben Eigenschaften.
Ich dachte an Reflexion, um dies zu tun, aber ich kann den Getter von einem Objekt nicht mit dem Setter des anderen "verbinden".
public List<Method> getAllGetters(Object object){
List<Method> result = new ArrayList<>();
for (final PropertyDescriptor propertyDescriptor : Introspector.getBeanInfo(object.getClass()).getPropertyDescriptors()) {
result.add(readMethod = propertyDescriptor.getReadMethod());
}
return result;
}
bearbeiten:
BeanUtils.copyProperties(this, anotherBean);
Arbeiten wie erwartet!
Und Reflexion ist fehlerfrei? – GurV
@ GurwinderSingh, danke für diesen wertvollen Kommentar. – kerner1000
Ich habe [Orika] (http://orika-mapper.github.io/orika-docs/intro.html) und [Dozer] (https://github.com/DozerMapper/dozer) in einigen Projekten verwendet. Allerdings würde ich mit den manuellen Mappern gehen. Es ist nicht so schwierig und es ist nicht so fehleranfällig. Diese Tools (Orika und Dozer) erfordern entweder eine Konfiguration oder machen Ihren Code von beliebigen Konventionen abhängig. Obwohl sie hilfreich sind, ist der Preis dafür sehr hoch. –