gpt4 book ai didi

java - 如何获取 java 参数化集合类的类型?

转载 作者:行者123 更新时间:2023-12-01 19:18:48 32 4
gpt4 key购买 nike

在java中,我可以使用 ClassName.class 获取任何类的类型。但是如果我想获取参数化(通用)集合的类型怎么办? Collection<MyClass>.class不起作用。

这就是我想做的:

ParameterExpression<Collection<MyClass>> dateParameter = criteriaBuilder.parameter(Collection<MyClass>.class);

最佳答案

由于 Java 中泛型的实现方式(类型删除),没有 Collection<MyClass>类(class)。只是标准Collection类。

泛型实际上是额外的编译时检查,仅以有限的方式将其放入生成的字节码中。特别是,对象不知道它们是用哪些通用参数实例化的,因此您不能调用例如instanceof在运行时检查这一点。

大多数反射调用(包括使用 Class 类)都会忽略泛型,因为无论如何您都不会获得任何类型安全。即使运行时允许您访问 Collection<MyClass>类,其 add方法仍然仅需要 Object因为这只是获取原始类型的语法糖 Collection 。可以说,Java 在这里做出了正确的决定,不允许这种潜在的误导性语法,因此它清楚地表明泛型类在运行时实际上并不存在。

关于java - 如何获取 java 参数化集合类的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5388511/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com