为了账号安全,请及时绑定邮箱和手机立即绑定

Java中的方法签名是否包含其返回类型?

Java中的方法签名是否包含其返回类型?

慕田峪7331174 2019-12-11 13:09:19
Java类/接口中的方法签名是否包括其返回类型?例:Java是否知道这两种方法之间的区别:public class Foo {    public int  myMethod(int param) {}    public char myMethod(int param) {}}还是仅重要的方法名称和参数列表?
查看完整描述

3 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

从Oracle Docs报价:


定义:方法声明的两个组成部分包括方法签名 -方法的名称和参数类型。

//img1.sycdn.imooc.com//5db285a20001da0a05790223.jpg

由于对问题进行了编辑以包括以下示例:


public class Foo {

    public int  myMethod(int param) {}

    public char myMethod(int param) {}

}

不,编译器不会知道它们之间的区别,因为它们的签名myMethod(int param)是相同的。第二行:


    public char myMethod(int param) {}

会给你带来错误:方法已经在class中定义了,这进一步确认了上面的声明。



查看完整回答
反对 回复 2019-12-12
?
千巷猫影

TA贡献1829条经验 获得超7个赞

Java中的类方法签名是否包含返回类型?


在Java中不是,但在此JVM中却可以,这可能导致明显的混乱。


Java中的接口方法签名是否包含返回类型?


与类方法相同。


还是只有方法名称和参数列表?


Java的方法名称和参数类型。例如,参数注释和名称无关紧要。



查看完整回答
反对 回复 2019-12-12
?
侃侃无极

TA贡献2051条经验 获得超10个赞

在字节码级别,“返回类型”是方法签名的一部分。考虑一下


public class Test1  {

    public Test1 clone() throws CloneNotSupportedException {

        return (Test1) super.clone();

    }

}

在字节码中有2个clone()方法


public clone()LTest1; throws java/lang/CloneNotSupportedException 


public clone()Ljava/lang/Object; throws java/lang/CloneNotSupportedException 

它们仅在返回类型上有所不同。



查看完整回答
反对 回复 2019-12-12
  • 3 回答
  • 0 关注
  • 461 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信