Java中的以下方法编译得很好。
public String temp() {
while(true) {
if(true) {
// Do something.
}
}
}
该方法有一个明确的返回类型,虽然它编译得很好,但它java.lang.String
没有声明。return
但是,以下方法无法编译。
public String tempNew() {
if(true) {
return "someString";
}
}
即使用语句指定的条件始终为真(它有一个永远不会被反射改变的常量),也会发出一个编译时错误,指示“缺少return
语句”。该方法必须进行如下修改才能成功编译。if
boolean
public String tempNew() {
if(true) {
return "someString";
} else {
return "someString";
}
}
或者
public String tempNew() {
if(true) {
return "someString";
}
return "someString";
}
关于while
循环的第一种情况,第二种情况似乎是合法的,尽管它无法编译。
第二种情况是否有超出编译器功能之一的原因。