- class GenericClass<T> { 
-   
-     public T method1(T obj, Class<T> clazz) { 
-         return obj; 
-     } 
-   
-     public <U extends T> U method2(U obj, Class<U> clazz) { 
-         return obj; 
-     } 
- } 
-   
- class Test extends GenericClass<SuperClass> { 
-   
-     public SuperClass printMethod1() { 
-         SuperClass sClass = new SuperClass(); 
-         sClass.setName("name"); 
-         sClass.setEmail("email"); 
-         sClass.setAddress("Address"); 
-         return this.method1(sClass, SuperClass.class); 
-     } 
-   
-     public SubClass printMethod2() { 
-         SubClass subClass = new SubClass(); 
-         subClass.setName("testName"); 
-         subClass.setEmail("testEmail"); 
-         subClass.setAddress("testAddress"); 
-         subClass.setName2("name2"); 
-         return this.method2(subClass, SubClass.class); 
-     } 
- } 
-   
- class SuperClass { 
-   
-   
-         return this.name; 
-     } 
-     public void-  setName (String-  name_p ) {
 
-         this.name = name_p; 
-     } 
-         return this.email; 
-     } 
-     public void-  setEmail (String-  email_p ) {
 
-         this.email = email_p; 
-     } 
-         return this.address; 
-     } 
-     public void-  setAddress (String-  address_p ) {
 
-         this.address = address_p; 
-     } 
- } 
-   
- class SubClass extends SuperClass { 
-   
-   
-         return this.name2; 
-     } 
-   
-     public void-  setName2 (String-  name2_p ) {
 
-         this.name2 = name2_p; 
-     } 
-   
- } 
-   
- class-  Main  { public static void-  main (String[]-  args ) {} }
 
				Y2xhc3MgR2VuZXJpY0NsYXNzPFQ+IHsKCiAgICBwdWJsaWMgVCBtZXRob2QxKFQgb2JqLCBDbGFzczxUPiBjbGF6eikgewogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihvYmopOwogICAgICAgIHJldHVybiBvYmo7CiAgICB9CgogICAgcHVibGljIDxVIGV4dGVuZHMgVD4gVSBtZXRob2QyKFUgb2JqLCBDbGFzczxVPiBjbGF6eikgewogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihvYmopOwogICAgICAgIHJldHVybiBvYmo7CiAgICB9Cn0KCmNsYXNzIFRlc3QgZXh0ZW5kcyBHZW5lcmljQ2xhc3M8U3VwZXJDbGFzcz4gewoKICAgIHB1YmxpYyBTdXBlckNsYXNzIHByaW50TWV0aG9kMSgpIHsKICAgICAgICBTdXBlckNsYXNzIHNDbGFzcyA9IG5ldyBTdXBlckNsYXNzKCk7CiAgICAgICAgc0NsYXNzLnNldE5hbWUoIm5hbWUiKTsKICAgICAgICBzQ2xhc3Muc2V0RW1haWwoImVtYWlsIik7CiAgICAgICAgc0NsYXNzLnNldEFkZHJlc3MoIkFkZHJlc3MiKTsKICAgICAgICByZXR1cm4gdGhpcy5tZXRob2QxKHNDbGFzcywgU3VwZXJDbGFzcy5jbGFzcyk7CiAgICB9CgogICAgcHVibGljIFN1YkNsYXNzIHByaW50TWV0aG9kMigpIHsKICAgICAgICBTdWJDbGFzcyBzdWJDbGFzcyA9IG5ldyBTdWJDbGFzcygpOwogICAgICAgIHN1YkNsYXNzLnNldE5hbWUoInRlc3ROYW1lIik7CiAgICAgICAgc3ViQ2xhc3Muc2V0RW1haWwoInRlc3RFbWFpbCIpOwogICAgICAgIHN1YkNsYXNzLnNldEFkZHJlc3MoInRlc3RBZGRyZXNzIik7CiAgICAgICAgc3ViQ2xhc3Muc2V0TmFtZTIoIm5hbWUyIik7CiAgICAgICAgcmV0dXJuIHRoaXMubWV0aG9kMihzdWJDbGFzcywgU3ViQ2xhc3MuY2xhc3MpOwogICAgfQp9CgpjbGFzcyBTdXBlckNsYXNzIHsKCiAgICBwcml2YXRlIFN0cmluZyBuYW1lOwogICAgcHJpdmF0ZSBTdHJpbmcgZW1haWw7CiAgICBwcml2YXRlIFN0cmluZyBhZGRyZXNzOwoKICAgIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsKICAgICAgICByZXR1cm4gdGhpcy5uYW1lOwogICAgfQogICAgcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmFtZV9wKSB7CiAgICAgICAgdGhpcy5uYW1lID0gbmFtZV9wOwogICAgfQogICAgcHVibGljIFN0cmluZyBnZXRFbWFpbCgpIHsKICAgICAgICByZXR1cm4gdGhpcy5lbWFpbDsKICAgIH0KICAgIHB1YmxpYyB2b2lkIHNldEVtYWlsKFN0cmluZyBlbWFpbF9wKSB7CiAgICAgICAgdGhpcy5lbWFpbCA9IGVtYWlsX3A7CiAgICB9CiAgICBwdWJsaWMgU3RyaW5nIGdldEFkZHJlc3MoKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuYWRkcmVzczsKICAgIH0KICAgIHB1YmxpYyB2b2lkIHNldEFkZHJlc3MoU3RyaW5nIGFkZHJlc3NfcCkgewogICAgICAgIHRoaXMuYWRkcmVzcyA9IGFkZHJlc3NfcDsKICAgIH0KfQoKY2xhc3MgU3ViQ2xhc3MgZXh0ZW5kcyBTdXBlckNsYXNzIHsKCiAgICBwcml2YXRlIFN0cmluZyBuYW1lMjsKCiAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWUyKCkgewogICAgICAgIHJldHVybiB0aGlzLm5hbWUyOwogICAgfQoKICAgIHB1YmxpYyB2b2lkIHNldE5hbWUyKFN0cmluZyBuYW1lMl9wKSB7CiAgICAgICAgdGhpcy5uYW1lMiA9IG5hbWUyX3A7CiAgICB9Cgp9CgpjbGFzcyBNYWluIHsgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykge30gfQ==