You should use a generic:
public <T> void setList(){ List<T> list = new ArrayList<>(); } ... obj.<Man>setList(); obj.<Woman>setList(); obj.<Person>setList();
or
public <T> void setList(Class<T> clazz){ List<T> list = new ArrayList<>(); } ... obj.setList(Woman.class); obj.setList(Man.class); obj.setList(Person.class);
or
public static class MyClass <T> { public <T> void setList() { List<T> list = new ArrayList<>(); } } ... new MyClass<Woman>().setList(); new MyClass<Man>().setList(); new MyClass<Person>().setList();
Update: Instead of code
public void validate(Class clazz, Object model, BindingResult result){ ... Set<ConstraintViolation<clazz>> constraintViolations=validator.validate((clazz)model); for (ConstraintViolation<clazz> constraintViolation : constraintViolations) { ... }
use code
public void <T> validate(Class<T> clazz, Object<T> model, BindingResult result){ ... Set<ConstraintViolation<T>> constraintViolations=validator.validate(model); for (ConstraintViolation<T> constraintViolation : constraintViolations) { ... }
source share