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

新手上路,请多包涵

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

原文由 user1768830 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 930
2 个回答
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() )。

原文由 Joop Eggen 发布,翻译遵循 CC BY-SA 3.0 许可协议

甚至不需要通过课程:

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

原文由 newacct 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题