Java泛型与重载有趣实例

238 阅读1分钟

书中发现的有趣实例

  • 图一 image.png
  • 图二 image.png
  • 如果我面试,会问问图一和图二的输出结果是什么,如果答对了,会问问为什么?

image.png

  • 总结 两个方法有相同的名称和特征签名,本来不参与重载的返回值,变成了不一致的描述符,所以可以共存于一个Class。
    如果是正常的Class,如图一,会因为类型擦除,变成裸类型,并且没有有差异的标识符,导致报错。
    如果是正常的Class,没有涉及泛型问题,哪怕存在差异的返回值,但是返回值不被包含在特征签名里面,依然报错。
    所以,这是一个细化起来,比较复杂的问题,如果要弄懂,一定要明白:特征签名包含什么、泛型底层是裸类型等。