java - 如何让 Java 方法返回任何类型的通用列表?

标签 java list generics reflection casting

我想编写一个方法,该方法将返回任何类型的 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;
}

最佳答案

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())。

关于java - 如何让 Java 方法返回任何类型的通用列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17840483/

相关文章:

generics - 如何将类型参数传递给泛型类构造函数引用?

java - 如何使用java在android中绘制带有圆角矩形的二维码?

java - SOLR 性能调整

java - 为什么这个 Java 格式的输出不是右对齐的?

python - 在python中将一维列表转换为具有给定行长度的二维列表

java - 我如何进行泛型泛型?

java - Java 中的重力弹球

css - 图像翻转列表不起作用

java - 尝试从列表中查找倒数第 n 个元素(使用文件输入)

java - 泛型通配符不接受实现接口(interface)的类