far*_*oft 95 java method-signature
Java类/接口中的方法签名是否包含其返回类型?
例:
Java是否知道这两种方法之间的区别:
public class Foo {
public int myMethod(int param) {}
public char myMethod(int param) {}
}
Run Code Online (Sandbox Code Playgroud)
或者也许只有方法名称和参数列表才重要?
Jop*_*ops 142
从Oracle Docs引用:
定义:方法声明的两个组件包括方法签名 - 方法的名称和参数类型.

由于编辑了该问题以包含此示例:
public class Foo {
public int myMethod(int param) {}
public char myMethod(int param) {}
}
Run Code Online (Sandbox Code Playgroud)
不,编译器不会知道差异,因为他们的签名:myMethod(int param)是相同的.第二行:
public char myMethod(int param) {}
Run Code Online (Sandbox Code Playgroud)
会给你错误:方法已在类中定义,这进一步证实了上述语句.
Pet*_*rey 18
Java中的类方法签名是否包含返回类型?
在Java中它不会,但在这个JVM中,它会导致明显的混淆.
Java中的接口方法签名是否包含返回类型?
与类methos相同.
或者只有方法名称和参数列表?
Java的方法名称和参数类型.例如,参数注释和名称无关紧要.
在字节码级别,返回类型是方法签名的一部分.考虑一下
public class Test1 {
public Test1 clone() throws CloneNotSupportedException {
return (Test1) super.clone();
}
}
Run Code Online (Sandbox Code Playgroud)
在字节码中有2个clone()方法
public clone()LTest1; throws java/lang/CloneNotSupportedException
public clone()Ljava/lang/Object; throws java/lang/CloneNotSupportedException
Run Code Online (Sandbox Code Playgroud)
它们只有返回类型不同.