我们可以说方法本地类是一种Inner类吗?

时间:2016-06-11 15:38:33

标签: java inner-classes anonymous-inner-class local-class

由于我们不能将static修饰符与方法中定义的本地类一起使用,并且由于非静态嵌套类是内部类,我们可以说方法本地类是Inner类的一种类型。

但另一方面,我们说如果没有封闭类的Live实例,内部类的实例就不会存在。但是,在静态方法 中定义的方法本地类的实例可以在没有封闭类的实时实例的情况下存在,对吗?

那么我从中得出什么结论呢?第一个逻辑告诉我本地类是一类Inner类,第二条推理告诉我Local类不是Inner类。

1 个答案:

答案 0 :(得分:2)

  

我们说如果没有封闭类的Live实例

,内部类的实例就不会存在

没有。来自the JLS(强调我的):

  

内部类C是类或接口O的直接内部类,如果O是C的直接封闭类型声明,并且C 的声明不在静态上下文中发生

     

[...]

     

类或接口O的直接内部类C的实例i与O的实例相关联,称为i的直接封闭实例。

这告诉我们一个人可能有一个没有封闭实例的内部类。特别是,这发生在静态上下文中定义的情况下。