Following are my classes. in the Test class, I am unable to return object of SubClass I am getting the error
The method method2(SuperClass, Class) in the type GenericClass is not applicable for the arguments (SubClass, Class)
public class GenericClass<T> {
public T method1(T obj, Class<T> clazz) {
System.out.println(obj);
return obj;
}
public T method2(T obj, Class<T> clazz) {
System.out.println(obj);
return obj;
}
}
public 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);
}
}
public class SuperClass {
private String name;
private String email;
private String address;
public String getName() {
return this.name;
}
public void setName(String name_p) {
this.name = name_p;
}
public String getEmail() {
return this.email;
}
public void setEmail(String email_p) {
this.email = email_p;
}
public String getAddress() {
return this.address;
}
public void setAddress(String address_p) {
this.address = address_p;
}
}
public class SubClass extends SuperClass {
private String name2;
public String getName2() {
return this.name2;
}
public void setName2(String name2_p) {
this.name2 = name2_p;
}
}
I need the parameter Class class in the GenericClass for different purpose(I did not put the logic here)
I tried casting but it doesn't work. can you please suggest how can I return SubClass object in printMethod2.