Я пытаюсь использовать Dozer для преобразования экземпляра
class Source {
private List<Foo> foos = new ArrayList<Foo>();
public List<Foo> getFoos() {
return foos;
}
public void setFoos(List<Foo> foos) {
this.foos = foos;
}
}
к экземпляру:
class Target {
private List<Foo> foos = new ArrayList<Foo>();
public List<Foo> getFoos() {
return foos;
}
}
В коде Java я бы выполнил преобразование следующим образом
Source s = new Source();
Target t = new Target();
t.getFoos().addAll(s.getFoos());
Dozer не выполняет это преобразование по умолчанию, потому что Target
не имеет свойства foos
(только геттер).
На самом деле у меня много таких свойств, которые мне нужно отобразить. Один из вариантов — попросить Dozer отобразить частные поля напрямую, но это не совсем удовлетворительно. так как:
- Мне нужно будет указать каждое поле, которое будет отображаться таким образом, по имени в конфигурации XML Dozer.
- доступ к закрытым полям плохой
Есть ли способ лучше?
t.getFoos().addAll(s.getFoos());
приведет к NPE для приведенной выше реализацииTarget
, не так ли? - person Thomas   schedule 21.04.2011