Spring如何在运行时识别泛型类型参数?类型擦除为何未生效?
关于Spring中泛型类型运行时保留的疑问
遇到如下异常信息:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'java.util.List<java.lang.String>' available
按照Java泛型的类型擦除机制,<java.lang.String>这类泛型参数信息应该在运行时被擦除,但它却出现在运行阶段抛出的异常中。想知道这类信息为何能保留到运行时,Spring又是通过何种机制实现这一点的?
曾看到过类似问题的讨论,但其中获赞最高的两个回答并未精准解答我的疑问:
- GhostCat again on strike 表示类的泛型属性(而非实际类型)会被保留并可获取
- yshavit 表示可通过反射获取父类的泛型类型
内容的提问来源于stack exchange,提问作者Sergey Zolotarev
相关产品推荐
相关产品推荐

