import java.util.* ;
import java.lang.* ;
import java.lang.reflect.* ;
class Main
{
{
Source source = new Source( ) ;
Destination destination = new Destination( ) ;
Class sourceClassObject = source.getClass ( ) ;
Class destClassObject = destination.getClass ( ) ;
Field [ ] sourceFields
= sourceClassObject.
getDeclaredFields ( ) ; Field [ ] destFields
= destClassObject.
getDeclaredFields ( ) ;
for ( Field fieldSrc
: sourceFields
) { int mod = fieldSrc.getModifiers ( ) ; // get modifiers
+ fieldSrc.getType ( ) + " " + fieldSrc.getName ( ) ) ;
fieldSrc.setAccessible ( true ) ;
System .
out .
println ( " [" + fieldSrc.
get ( source
) + "]" ) ; for ( Field fieldDest
: destFields
) { if ( fieldDest.getType ( ) .equals ( fieldSrc.getType ( ) ) &&
fieldDest.getName ( ) .equals ( fieldSrc.getName ( ) ) ) {
fieldDest.setAccessible ( true ) ;
fieldDest.set ( destination, fieldSrc.get ( source) ) ;
}
}
}
destination.printValues ( ) ;
}
static class Source{
public Source( ) {
strField = "This is a String" ;
intField = 42 ;
}
}
static class Destination{
public void printValues( ) {
System .
out .
println ( "Destination Field values: " ) ; System .
out .
println ( "strField: " + strField
) ; System .
out .
println ( "intField: " + intField
) ; System .
out .
println ( "dateField: " + dateField
) ; }
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC4qOwoKY2xhc3MgTWFpbgp7CgoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkgICAgU291cmNlIHNvdXJjZSA9IG5ldyBTb3VyY2UoKTsKICAgICAgICBEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiA9IG5ldyBEZXN0aW5hdGlvbigpOwogIAogIAogICAgICAgIENsYXNzIHNvdXJjZUNsYXNzT2JqZWN0ID0gc291cmNlLmdldENsYXNzKCk7CiAgICAgICAgQ2xhc3MgZGVzdENsYXNzT2JqZWN0ID0gZGVzdGluYXRpb24uZ2V0Q2xhc3MoKTsKICAgICAgICBGaWVsZFtdIHNvdXJjZUZpZWxkcyA9IHNvdXJjZUNsYXNzT2JqZWN0LmdldERlY2xhcmVkRmllbGRzKCk7CiAgICAgICAgRmllbGRbXSBkZXN0RmllbGRzID0gZGVzdENsYXNzT2JqZWN0LmdldERlY2xhcmVkRmllbGRzKCk7CiAgICAgICAgCiAgICAgICAgZm9yIChGaWVsZCBmaWVsZFNyYyA6IHNvdXJjZUZpZWxkcykgewogICAgICAgICAgICBpbnQgbW9kID0gZmllbGRTcmMuZ2V0TW9kaWZpZXJzKCk7ICAvLyBnZXQgbW9kaWZpZXJzCiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIlNvdXJjZSBGaWVsZDogIiArIE1vZGlmaWVyLnRvU3RyaW5nKG1vZCkgKyAiICIKICAgICAgICAgICAgICArIGZpZWxkU3JjLmdldFR5cGUoKSArICIgIiArIGZpZWxkU3JjLmdldE5hbWUoKSk7CiAgICAgICAgICAgIGZpZWxkU3JjLnNldEFjY2Vzc2libGUodHJ1ZSk7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIFsiICsgZmllbGRTcmMuZ2V0KHNvdXJjZSkgKyAiXSIpOwogICAgICAgICAgICBmb3IgKEZpZWxkIGZpZWxkRGVzdCA6IGRlc3RGaWVsZHMpewogICAgICAgICAgICAgICAgaWYgKGZpZWxkRGVzdC5nZXRUeXBlKCkuZXF1YWxzKGZpZWxkU3JjLmdldFR5cGUoKSkgJiYgCiAgICAgICAgICAgICAgICAgICAgZmllbGREZXN0LmdldE5hbWUoKS5lcXVhbHMoZmllbGRTcmMuZ2V0TmFtZSgpKSl7CiAgICAgICAgICAgICAgICAgICAgZmllbGREZXN0LnNldEFjY2Vzc2libGUodHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgZmllbGREZXN0LnNldChkZXN0aW5hdGlvbiwgZmllbGRTcmMuZ2V0KHNvdXJjZSkpOwogICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBkZXN0aW5hdGlvbi5wcmludFZhbHVlcygpOwogICAgfQogICAgCiAgICBzdGF0aWMgY2xhc3MgU291cmNleyAgICAgICAgCiAgICAgICAgCiAgICAgICAgcHVibGljIFNvdXJjZSgpewogICAgICAgICAgICBzdHJGaWVsZCA9ICJUaGlzIGlzIGEgU3RyaW5nIjsKICAgICAgICAgICAgaW50RmllbGQgPSA0MjsKICAgICAgICAgICAgZGF0ZUZpZWxkID0gbmV3IERhdGUoKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgcHJpdmF0ZSBTdHJpbmcgIHN0ckZpZWxkOwogICAgICAgIHByaXZhdGUgSW50ZWdlciBpbnRGaWVsZDsKICAgICAgICBwcml2YXRlIERhdGUgICAgZGF0ZUZpZWxkOwogICAgfQogICAgCiAgICBzdGF0aWMgY2xhc3MgRGVzdGluYXRpb257ICAgICAgICAKICAgICAgICBwcml2YXRlIFN0cmluZyAgc3RyRmllbGQ7CiAgICAgICAgcHJpdmF0ZSBJbnRlZ2VyIGludEZpZWxkOwogICAgICAgIHByaXZhdGUgRGF0ZSAgICBkYXRlRmllbGQ7CiAgICAgICAgCiAgICAgICAgcHVibGljIHZvaWQgcHJpbnRWYWx1ZXMoKXsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJEZXN0aW5hdGlvbiBGaWVsZCB2YWx1ZXM6ICIpOwogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oInN0ckZpZWxkOiAiICsgc3RyRmllbGQpOwogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImludEZpZWxkOiAiICsgaW50RmllbGQpOwogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImRhdGVGaWVsZDogIiArIGRhdGVGaWVsZCk7CiAgICAgICAgfQogICAgfSAgICAKfQ==