我们可以说局部方法 class 是内部 class 的一种吗?
Can we say that a method-local class is a type of Inner class?
因为我们不能将 static
修饰符与在方法内部定义的局部 class 一起使用,并且由于非静态嵌套 classes 是内部 classes,我们可能会说局部方法 class 是内部 class 的一种类型。
但另一方面,我们说如果没有封闭 class 的实时实例,内部 classes 的实例就不能存在。但是在 静态方法 中定义的局部方法实例 class 可以在没有封闭 [=25] 的活动实例的情况下存在=],对吗?
那么我从中得出什么结论呢? 第一个逻辑告诉我本地 classes 是一种内部 class,第二个一段推理告诉我 Local class 不是 Inner class.
we say that instances of Inner classes CAN NOT exist without a Live instance of the enclosing class
没有。来自 the JLS(强调我的):
An inner class C is a direct inner class of a class or interface O if O is the immediately enclosing type declaration of C and the declaration of C does not occur in a static context.
[...]
An instance i of a direct inner class C of a class or interface O is associated with an instance of O, known as the immediately enclosing instance of i.
这告诉我们,一个人可能有一个没有封闭实例的内部 class。特别是,这种情况发生在静态上下文中定义的情况下。
因为我们不能将 static
修饰符与在方法内部定义的局部 class 一起使用,并且由于非静态嵌套 classes 是内部 classes,我们可能会说局部方法 class 是内部 class 的一种类型。
但另一方面,我们说如果没有封闭 class 的实时实例,内部 classes 的实例就不能存在。但是在 静态方法 中定义的局部方法实例 class 可以在没有封闭 [=25] 的活动实例的情况下存在=],对吗?
那么我从中得出什么结论呢? 第一个逻辑告诉我本地 classes 是一种内部 class,第二个一段推理告诉我 Local class 不是 Inner class.
we say that instances of Inner classes CAN NOT exist without a Live instance of the enclosing class
没有。来自 the JLS(强调我的):
An inner class C is a direct inner class of a class or interface O if O is the immediately enclosing type declaration of C and the declaration of C does not occur in a static context.
[...]
An instance i of a direct inner class C of a class or interface O is associated with an instance of O, known as the immediately enclosing instance of i.
这告诉我们,一个人可能有一个没有封闭实例的内部 class。特别是,这种情况发生在静态上下文中定义的情况下。