Tôi có một lớp về cơ bản là bản sao của một lớp khác.
public class A {
int a;
String b;
}
public class CopyA {
int a;
String b;
}
Những gì tôi đang làm là đặt các giá trị từ lớp A
vào CopyA
trước khi gửi CopyA
qua một cuộc gọi dịch vụ web. Bây giờ tôi muốn tạo một phương thức phản chiếu về cơ bản sao chép tất cả các trường giống hệt nhau (theo tên và kiểu) từ lớp này A
sang lớp khác CopyA
.
Tôi có thể làm cái này như thế nào?
Đây là những gì tôi có cho đến nay, nhưng nó không hoàn toàn hoạt động. Tôi nghĩ vấn đề ở đây là tôi đang cố gắng thiết lập một trường trên sân mà tôi đang lặp lại.
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();
}
}
}
Tôi chắc chắn phải có ai đó đã làm điều này bằng cách nào đó