fork download
  1. import java.util.*;
  2. import java.lang.*;
  3. import java.lang.reflect.*;
  4.  
  5. class Main
  6. {
  7.  
  8. public static void main (String[] args) throws java.lang.Exception
  9. {
  10. Source source = new Source();
  11. Destination destination = new Destination();
  12.  
  13.  
  14. Class sourceClassObject = source.getClass();
  15. Class destClassObject = destination.getClass();
  16. Field[] sourceFields = sourceClassObject.getDeclaredFields();
  17. Field[] destFields = destClassObject.getDeclaredFields();
  18.  
  19. for (Field fieldSrc : sourceFields) {
  20. int mod = fieldSrc.getModifiers(); // get modifiers
  21. System.out.print("Source Field: " + Modifier.toString(mod) + " "
  22. + fieldSrc.getType() + " " + fieldSrc.getName());
  23. fieldSrc.setAccessible(true);
  24. System.out.println(" [" + fieldSrc.get(source) + "]");
  25. for (Field fieldDest : destFields){
  26. if (fieldDest.getType().equals(fieldSrc.getType()) &&
  27. fieldDest.getName().equals(fieldSrc.getName())){
  28. fieldDest.setAccessible(true);
  29. fieldDest.set(destination, fieldSrc.get(source));
  30. }
  31. }
  32. }
  33.  
  34. destination.printValues();
  35. }
  36.  
  37. static class Source{
  38.  
  39. public Source(){
  40. strField = "This is a String";
  41. intField = 42;
  42. dateField = new Date();
  43. }
  44.  
  45. private String strField;
  46. private Integer intField;
  47. private Date dateField;
  48. }
  49.  
  50. static class Destination{
  51. private String strField;
  52. private Integer intField;
  53. private Date dateField;
  54.  
  55. public void printValues(){
  56. System.out.println("Destination Field values: ");
  57. System.out.println("strField: " + strField);
  58. System.out.println("intField: " + intField);
  59. System.out.println("dateField: " + dateField);
  60. }
  61. }
  62. }
Success #stdin #stdout 0.1s 380864KB
stdin
Standard input is empty
stdout
Source Field: private class java.lang.String strField [This is a String]
Source Field: private class java.lang.Integer intField [42]
Source Field: private class java.util.Date dateField [Mon Feb 04 14:02:31 GMT 2013]
Destination Field values: 
strField: This is a String
intField: 42
dateField: Mon Feb 04 14:02:31 GMT 2013