У меня есть куча сторонних классов Java, которые используют разные имена свойств для того, что, по сути, является одним и тем же свойством:
public class Foo {
public String getReferenceID();
public void setReferenceID(String id);
public String getFilename();
public void setFilename(String fileName);
}
public class Bar {
public String getRefID();
public void setRefID(String id);
public String getFileName();
public void setFileName(String fileName);
}
Я хотел бы иметь возможность обращаться к ним в канонизированной форме, поэтому что я могу обрабатывать их полиморфно, и так что я могу делать с Apache BeanUtils такие вещи, как:
PropertyUtils.copyProperties(object1,object2);
Очевидно, было бы тривиально написать адаптер для каждого класса...
public class CanonicalizedBar implements CanonicalizedBazBean {
public String getReferenceID() {
return this.delegate.getRefID();
}
// etc.
}
Но мне интересно, есть ли что-то более обобщенное? и динамичный? Что-то, что могло бы взять карту эквивалентности имени свойства «один ко многим» и класс делегата и создать адаптер?