मेरे पास एक वर्ग है जो मूल रूप से दूसरे वर्ग की नकल है।
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();
}
}
}
मुझे यकीन है कि कोई ऐसा व्यक्ति होना चाहिए जिसने पहले ही किसी तरह ऐसा किया हो