Philip Devin..
8
查看字节代码,如果返回的内容与定义不匹配,您将收到编译错误.
例:
for(;;) 将显示字节码:
L0
LINENUMBER 6 L0
FRAME SAME
GOTO L0
注意缺少任何返回字节码
这不会返回,因此不会返回错误的类型.
为了比较,一种方法如下:
public String getBar() {
return bar;
}
将返回以下字节码:
public java.lang.String getBar();
Code:
0: aload_0
1: getfield #2; //Field bar:Ljava/lang/String;
4: areturn
注意"areturn",意思是"返回参考"
现在,如果我们执行以下操作:
public String getBar() {
return 1;
}
将返回以下字节码:
public String getBar();
Code:
0: iconst_1
1: ireturn
现在我们可以看到定义中的类型与ireturn的返回类型不匹配,这意味着返回int.
所以它真正归结为如果该方法具有返回路径,则该路径必须与返回类型匹配.但是在字节码中有些实例根本没有生成返回路径,因此没有违反规则.