如何在Java中将泛型列表类作为参数传递给泛型方法?

胡姆金斯

我想要一种方法,该方法将返回从地图提取的所需对象类型。这是一个例子

Map<String,Object> map = new HashMap<>();
map.put("ids", Arrays.asList(5,345,45645)); 
map.put("id", 325); 

<T> T get(String arg, Class<T> clazz) {
    return (T) map.get(arg);
}

然后,例如,可以使用此代码获得Integer

Integer id = get("id", Integer.class);

但是当我尝试通过这些方式获取对象列表时

List<Integer> ids = get("ids", new ArrayList<Integer>().getClass());
List<Integer> ids = get("id", List.class);

Intellij IDEA警告: Unchecked assignment: 'java.util.ArrayList' to 'java.util.List<java.lang.Integer>'

我期望有类似的东西List<Integer>.class(类似于Integer.classBoolean.class等等。。。)

List<Integer> ids = get("ids", List<Integer>.class`)

但这尚未编译。

那么有解决方案吗?

安德烈亚斯(Andreas)

您实际上不需要Class参数。

<T> T unsafeGet(String arg) {
    return (T) map.get(arg);
}

我重命名了该方法,因为您将丢弃所有编译器类型检查

这两行可以编译,但是在运行时会失败:

Integer ids = unsafeGet("ids"); // java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.lang.Integer
Element id = unsafeGet("id");   // java.lang.ClassCastException: java.lang.Integer cannot be cast to org.w3c.dom.Element

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Java中将泛型列表类作为参数传递给泛型方法?

来自分类Dev

将类型参数作为类型参数的类传递给Java中的泛型方法

来自分类Dev

将类型参数作为类型参数的类传递给Java中的泛型方法

来自分类Dev

无法在具有泛型的方法中将集合类作为参数传递

来自分类Dev

将泛型参数传递给方法

来自分类Dev

如何将泛型传递给泛型方法?

来自分类Dev

如何在 Autofac 中将类的特定实现传递给泛型

来自分类Dev

如何在类中使用Comparable作为泛型参数

来自分类Dev

泛型类作为参数

来自分类Dev

获取作为基类传递给泛型方法的派生C#类的属性

来自分类Dev

如何从泛型方法参数中获取Java类?

来自分类Dev

Java 泛型:如何在泛型接口中获取泛型类的 Id?

来自分类Dev

通过泛型将类作为参数传递

来自分类Dev

在Swift中将泛型传递给函数

来自分类Dev

将变量ViewModel类型作为泛型传递给方法

来自分类Dev

将(本地)变量作为类型传递给泛型方法

来自分类Dev

通过将 Unit 作为类型传递给泛型特征的可选方法参数

来自分类Dev

将T作为参数传递给有条件地用Java创建泛型

来自分类Dev

C#泛型类作为参数,与泛型类的调用方法具有相同的T

来自分类Dev

C#泛型类作为参数,与泛型类的调用方法具有相同的T

来自分类Dev

将自引用传递给泛型类

来自分类Dev

将泛型类型类传递给方法

来自分类Dev

将动态类型的实例传递给泛型类中的泛型方法

来自分类Dev

将泛型类传递给返回相同类的泛型 ObservableCollection 的方法

来自分类Dev

将泛型作为参数传递时,泛型方法无法识别

来自分类Dev

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

来自分类Dev

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

来自分类Dev

Java-通过构造函数将泛型列表传递给类

来自分类Dev

如何使用已知类型作为参数创建具有泛型的泛型类?

Related 相关文章

  1. 1

    如何在Java中将泛型列表类作为参数传递给泛型方法?

  2. 2

    将类型参数作为类型参数的类传递给Java中的泛型方法

  3. 3

    将类型参数作为类型参数的类传递给Java中的泛型方法

  4. 4

    无法在具有泛型的方法中将集合类作为参数传递

  5. 5

    将泛型参数传递给方法

  6. 6

    如何将泛型传递给泛型方法?

  7. 7

    如何在 Autofac 中将类的特定实现传递给泛型

  8. 8

    如何在类中使用Comparable作为泛型参数

  9. 9

    泛型类作为参数

  10. 10

    获取作为基类传递给泛型方法的派生C#类的属性

  11. 11

    如何从泛型方法参数中获取Java类?

  12. 12

    Java 泛型:如何在泛型接口中获取泛型类的 Id?

  13. 13

    通过泛型将类作为参数传递

  14. 14

    在Swift中将泛型传递给函数

  15. 15

    将变量ViewModel类型作为泛型传递给方法

  16. 16

    将(本地)变量作为类型传递给泛型方法

  17. 17

    通过将 Unit 作为类型传递给泛型特征的可选方法参数

  18. 18

    将T作为参数传递给有条件地用Java创建泛型

  19. 19

    C#泛型类作为参数,与泛型类的调用方法具有相同的T

  20. 20

    C#泛型类作为参数,与泛型类的调用方法具有相同的T

  21. 21

    将自引用传递给泛型类

  22. 22

    将泛型类型类传递给方法

  23. 23

    将动态类型的实例传递给泛型类中的泛型方法

  24. 24

    将泛型类传递给返回相同类的泛型 ObservableCollection 的方法

  25. 25

    将泛型作为参数传递时,泛型方法无法识别

  26. 26

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

  27. 27

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

  28. 28

    Java-通过构造函数将泛型列表传递给类

  29. 29

    如何使用已知类型作为参数创建具有泛型的泛型类?

热门标签

归档