返回信息流《深入理解Java虚拟机》谈到这部分时,给出了以下源码:
可是我在idea里报错,说两个方法有相同的擦除,jdk1.7,望大神指教。
这是一条镜像帖。来源:北邮人论坛 / java / #53198同步于 2016/9/23
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
[求助]当泛型遇见重载
nihaoa
2016/9/23镜像同步18 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
书上说因为这两个method()方法加入了不同的返回值才能共存在一个Class文件之中,方法重载要求方法具备不同的特征签名,返回值并不包含在方法的特征签名之中,所以返回值不参与重载选择,但是在Class文件格式之中,只要描述符不是完全一致的两个方法就可以共存,也就是说,两个方法如果有相同的名称和特征签名,但返回值不同,那它们就可以合法地共存于一个Class文件中的。
【 在 nuanyangyang 的大作中提到: 】
: 你不觉得你那前两个函数除了返回值以外没有任何区别吗?
书上说因为这两个method()方法加入了不同的返回值才能共存在一个Class文件之中,方法重载要求方法具备不同的特征签名,返回值并不包含在方法的特征签名之中,所以返回值不参与重载选择,但是在Class文件格式之中,只要描述符不是完全一致的两个方法就可以共存,也就是说,两个方法如果有相同的名称和特征签名,但返回值不同,那它们就可以合法地共存于一个Class文件中的。
【 在 s1314 的大作中提到: 】
: 方法重载写的不对,都是list集合
书上说因为这两个method()方法加入了不同的返回值才能共存在一个Class文件之中,方法重载要求方法具备不同的特征签名,返回值并不包含在方法的特征签名之中,所以返回值不参与重载选择,但是在Class文件格式之中,只要描述符不是完全一致的两个方法就可以共存,也就是说,两个方法如果有相同的名称和特征签名,但返回值不同,那它们就可以合法地共存于一个Class文件中的。
【 在 flymop 的大作中提到: 】
: 方法签名完全一样 就是一个方法
真的?听起来很可疑。
【 在 nihaoa 的大作中提到: 】
: 书上说因为这两个method()方法加入了不同的返回值才能共存在一个Class文件之中,方法重载要求方法具备不同的特征签名,返回值并不包含在方法的特征签名之中,所以返回值不参与重载选择,但是在Class文件格式之中,只要描述符不是完全一致的两个方法就可以共存,也就是说,两个方法如果有相同的名称和特征签名,但返回值不同,那它们就可以合法地共存于一个Class文件中的。