У меня есть пары классов, где поля одного являются подмножеством полей другого, а геттеры классов надмножеств все предположительно называются (getFoo()
). Есть ли способ эффективно копировать все общие поля из класса superset в класс подмножества или, по крайней мере, автоматически генерировать код для этого.
Я должен отметить, что:
- По разным причинам я не могу редактировать классы надмножеств, а также не могу использовать их во всем, чтобы избежать копирования данных.
- Я могу потенциально создать новые методы в классах подмножеств, но я не могу изменить их поля.
- У нас есть десятки этих пар, и некоторые из классов имеют много полей, поэтому делать это вручную громоздко, если не сказать больше.
- Сотрудник разработал метод создания универсального метода копирования, который использует java-отражение для принятия любых двух классов, итерации по полям как строки, выполняет строчную манипуляцию, чтобы определить имя получателя, а затем выполнить его для автоматического набора поле в классе подмножества. Это ужасно, но, похоже, это работает. Я действительно надеюсь, что там будет лучший способ.
Изменить: некоторый простой код по запросу
public class SuperClass {
private int foo;
private int bar;
private float bat;
public int getFoo() { return foo; }
public int getBar() { return bar; }
public float getBat() { return bat; }
}
public class SubClass {
private int foo;
private float bat;
}
//wanted
public static copySuperFieldsToSubMethod(Object super, Object sub) { ??? }
// also acceptable would be some way to autogenerate all the assignment
// functions needed