Канонизация имен свойств Java bean

У меня есть куча сторонних классов 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.
}

Но мне интересно, есть ли что-то более обобщенное? и динамичный? Что-то, что могло бы взять карту эквивалентности имени свойства «один ко многим» и класс делегата и создать адаптер?

9
задан slim 19 June 2012 в 09:02
поделиться