如何让Java方法返回任何类型的泛型列表?

2022-08-31 12:58:41

我想写一个方法,可以返回任何类型的a,而无需对任何东西进行类型转换java.util.List

List<User> users = magicalListGetter(User.class);

List<Vehicle> vehicles = magicalListGetter(Vehicle.class);

List<String> strings = magicalListGetter(String.class);

方法签名会是什么样子?像这样的东西,也许(?):

public List<<?> ?> magicalListGetter(Class<?> clazz) {
    List<?> list = doMagicalVooDooHere();

    return list;
}

答案 1
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()


答案 2

甚至不需要通过类:

public <T> List<T> magicalListGetter() {
    return new ArrayList<T>();
}