Java-我们可以从初始值设定项中返回吗?
为什么静态初始值设定项不能有多个退出点?Java语言规范说明了这一点吗 尝试将代码编译为:Java-我们可以从初始值设定项中返回吗?,java,jls,Java,Jls,为什么静态初始值设定项不能有多个退出点?Java语言规范说明了这一点吗 尝试将代码编译为: class HelloWorldApp { static { if(1 > 2) return; System.out.println("static"); } public static void main(String[] args) { System.out.println("Hello World
class HelloWorldApp {
static {
if(1 > 2)
return;
System.out.println("static");
}
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
编译器打印出一个错误:返回外部方法
使用
javap
进行Java反汇编表明static
是一种无效的方法,因此从理论上讲是可能的,要创建具有多个“返回”的字节码?JLS声明静态
初始值设定项中的返回
语句是非法的。JLS声明静态
初始值设定项中的返回
语句是非法的。这看起来像是JVM问题,而不是JLS问题。太多的规格有时确实不同,这可能是其中之一。请参阅:@SotiriosDelimanolis将其转化为答案,以便我可以接受it@ChrisK我能够用Jasmin创建.class文件,谢谢,所以它在JVM中运行没有问题。这让我想知道为什么在JLS中禁止返回语句。