【问题标题】:Lexically inclosing type of a class类的词法封闭类型
【发布时间】:2015-01-09 16:24:48
【问题描述】:

这就是JLS 8.1.3 定义词法封闭类型概念的方式:

类或接口 O 是第零个词法封闭类型 自己的声明。

类 O 是类的第 n 个词法封闭类型声明 如果它是第 n-1 个的直接封闭类型声明,则为 C C 的词法封闭类型声明。

因此,从这个定义中并不清楚是否考虑了任何内部类或只是一个内部类类或接口 O。这些是不同的概念,因为最后一个定义如下:

内部类 C 是类或接口 O 的直接内部类,如果 O 是 C 的直接封闭类型声明, C 的声明不会出现在静态上下文中

类 C 是类或接口 O 的内部类,如果它是 O的直接内部类或O的内部类的内部类。

为了更清楚,让我举个例子:

class A{
    class Bar{ } //inner class of class A

    public static void main(String[] args){
        class Foo{ } //inner class, but not an inner class of class A
    }
}

DEMO

立即封闭类型的定义被认为是任何内部类或inner classes of class or interface O

【问题讨论】:

    标签: java class


    【解决方案1】:

    BarFoo 都将 A 作为直接封闭的 type 声明。他们处于平等地位。 Foo 也包含在 method 声明中这一事实不会影响这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-16
      • 1970-01-01
      • 2013-02-17
      • 1970-01-01
      • 2011-12-15
      • 2016-11-20
      • 2013-04-11
      相关资源
      最近更新 更多