如何让Java方法返回任何类型的通用列表? [英] How to have Java method return generic list of any type?
本文介绍了如何让Java方法返回任何类型的通用列表?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想写一个方法来返回任何类型的 java.util.List
,而不需要类型转换任何东西:
I would like to write a method that would return a java.util.List
of any type without the need to typecast anything:
List<User> users = magicalListGetter(User.class);
List<Vehicle> vehicles = magicalListGetter(Vehicle.class);
List<String> 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;
}
提前感谢!
推荐答案
private Object actuallyT;
public <T> List<T> magicalListGetter(Class<T> klazz) {
List<T> list = new ArrayList<>();
list.add(klazz.cast(actuallyT));
try {
list.add(klazz.getConstructor().newInstance()); // If default constructor
} ...
return list;
}
可以给方法一个通用类型参数。你已经正确推导出需要正确的类实例,创建一些东西( klazz.getConstructor()。newInstance()
)。
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()
).
这篇关于如何让Java方法返回任何类型的通用列表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文