I would like to write a method that would return a java.util.List of any type without the need to typecast anything:
List users = magicalListGetter(User.class);
List vehicles = magicalListGetter(Vehicle.class);
List strings = magicalListGetter(String.class);
What would the method signature look like? Something like this, perhaps(?):
public List<> ?> magicalListGetter(Class> clazz) {
List> list = doMagicalVooDooHere();
return list;
}
Thanks in advance!
解决方案
private Object actuallyT;
public List magicalListGetter(Class klazz) {
List list = new ArrayList<>();
list.add(klazz.cast(actuallyT));
try {
list.add(klazz.getConstructor().newInstance()); // If default constructor
} ...
return list;
}
One can give a generic type parameter to a method too. You have correctly deduced that one needs the correct class instance, to create things (klazz.getConstructor().newInstance()).