用Java实现接口-为什么javap输出两个具有相同签名但返回类型不同的方法?

问题描述

给出以下Java代码:

interface I {
  Object getId();
}

class A implements I {
  public Long getId() {
    return null;
  }
}
javac I.java A.java

它编译成功。反汇编时,类文件将产生以下输出:

javap I.class
javap A.class
Compiled from "I.java"
interface I {
  public abstract java.lang.Object getId();
}

Compiled from "A.java"
class A implements I {
  A();
  public java.lang.Long getId();     <--- (1)
  public java.lang.Object getId();   <--- (2)
}

问题是为什么反汇编输出中存在两种具有相同签名(1)和(2)的方法? 具有两个具有相同签名的方法-JLS不允许这样做吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...