기본적으로 다른 클래스의 복사 본인 클래스가 있습니다.
public class A {
int a;
String b;
}
public class CopyA {
int a;
String b;
}
내가 뭐하는 거지하는 클래스의 값을 가하고 A
로 CopyA
전송하기 전에 CopyA
Web 서비스 호출을 통해. 이제 기본적으로 class에서 class 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();
}
}
}
왠지 이미이 일을 한 사람이있을 것 같아요