【问题标题】:Java - can we return from within an initializer? [duplicate]Java - 我们可以从初始化程序中返回吗? [复制]
【发布时间】:2014-11-19 05:33:15
【问题描述】:

为什么静态初始化程序不能有多个退出点? Java 语言规范是这样说的吗?

当尝试将代码编译为:

class HelloWorldApp {
    static {
        if(1 > 2)
          return;
        System.out.println("static"); 
    }

    public static void main(String[] args) {
        System.out.println("Hello World!"); 
    }
}

编译器打印出错误:return outside method

使用javap 的Java 反汇编表明static 是一个void 方法,所以理论上是否有可能创建一个具有多个“返回”的字节码?

【问题讨论】:

  • JLS 声明 static 初始化程序中的 return 语句是非法的 here
  • 这看起来像是一个 JVM 问题,而不是 JLS 问题。规格有时确实会有所不同,这可能就是其中之一。
  • @SotiriosDelimanolis 把它变成一个答案,所以我可以接受它
  • @ChrisK 我能够用 Jasmin 创建 .class 文件,谢谢,所以它在 J​​VM 中运行没有问题。这让我想知道为什么 JLS 中会禁止 return 语句。

标签: java jls


【解决方案1】:

JLS 声明 static 初始化程序中的 return 语句是非法的 here

【讨论】:

    猜你喜欢
    • 2011-02-15
    • 1970-01-01
    • 2012-04-16
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    • 2021-11-30
    • 2018-02-20
    • 2020-09-17
    相关资源
    最近更新 更多