У мене є клас, який в основному є копією іншого класу.
public class A {
int a;
String b;
}
public class CopyA {
int a;
String b;
}
Що я роблю, це введення значень з класу Aв CopyAперед відправкою CopyAчерез виклик веб-служби. Тепер я хотів би створити метод відображення, який в основному копіює всі ідентичні поля (за іменем та типом) з класу Aв клас CopyA.
Як я можу це зробити?
Це те, що я маю дотепер, але це не зовсім працює. Я думаю, що проблема тут у тому, що я намагаюся встановити поле на полі, яке я переглядаю.
private <T extends Object, Y extends Object> void copyFields(T from, Y too) {
Class<? extends Object> fromClass = from.getClass();
Field[] fromFields = fromClass.getDeclaredFields();
Class<? extends Object> tooClass = too.getClass();
Field[] tooFields = tooClass.getDeclaredFields();
if (fromFields != null && tooFields != null) {
for (Field tooF : tooFields) {
logger.debug("toofield name #0 and type #1", tooF.getName(), tooF.getType().toString());
try {
// Check if that fields exists in the other method
Field fromF = fromClass.getDeclaredField(tooF.getName());
if (fromF.getType().equals(tooF.getType())) {
tooF.set(tooF, fromF);
}
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Я впевнений, що повинен бути хтось, хто це вже якось зробив