微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决用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 举报,一经查实,本站将立刻删除。