场景:
当两个重载函数的参数如下
void func(Map<Integer, String> map) {}
void func(Map<Integer, List<String>> map) {}
IDE会报出编译错误:both methods have same erasure
解答:
由于Java泛型在编译时擦除类型之后,上述方法会变成
void func(Map map)
查询了一下,又有几个相关概念需要了解和掌握。
https://www.jianshu.com/p/f9da328c91be
Java的泛型不同于C++的模板:Java泛型是"type erasure",C++模板是"reified generic"。
https://blog.csdn.net/abc_12366/article/details/79177328
https://blog.csdn.net/weixin_34121282/article/details/88535522 Map泛型
[Java123] 方法重载中遇到的编译器错误: both methods have same erasure => 引入Java泛型type erasure
原文:https://www.cnblogs.com/cathygx/p/11365253.html