1
7
它将返回与arraylist.class相同的值。Java泛型在运行时删除泛型类型;换句话说,从“列表”中,您将永远不知道元素类型是字符串。这里有一个很好的常见问题解答 http://www.angelikalanger.com/GenericsFAQ/JavaGenericsFAQ.html |
2
3
确实,擦除使获取给定对象的泛型类型信息变得不可能,因为泛型只保存在源代码的结构中。但是,这并不意味着不可能获得泛型类型参数,并且在许多重要情况下(例如,为给定的类/方法构建接口),您可以这样做。如果通过反射获取类的元素,则可以获取有关所使用的声明类型的一般信息。
例如,获取
这可以提供关于字段的泛型类型、方法参数和返回类型以及类本身(它自己的泛型参数以及它的超类和实现的接口)的信息。如果需要在反射上下文中对泛型方法执行类型安全参数检查,这可能非常有用。 |