Java泛型擦除导致的常见陷阱
J
楼主
2026/08/12 15:10
4800
0
Java泛型的类型擦除机制虽然保证了向后兼容,但也带来了一些隐蔽的问题:
- 不能创建泛型数组:
new T[]编译报错,需要用Array.newInstance反射创建 - instanceof检查受限:
obj instanceof List<String>非法,只能检查原始类型 - 重载歧义:
process(List<String>)和process(List<Integer>)擦除后签名相同 - 桥接方法:编译器自动生成桥接方法保证多态正确性,可能影响反射调用
建议在API设计阶段就考虑擦除的影响,必要时使用TypeToken或SuperTypeToken保留类型信息。
回复列表 (0)
发表回复
写下你的回复...