众所周知,局部类是内部类。 JLS 14.3
所有本地类都是内部类(第8.1.3节)。
内部阶级是什么
JLS 8.1.3
内部类C是类或接口O的直接内部类,如果
O是C的立即封闭类型声明,而O是
C的声明不会在静态上下文中发生。
C类是类或接口O的内部类,如果它是
O的直接内部类或O的内部类的内部类。
这意味着内部类的声明不应在非静态上下文中发生。但是请考虑以下程序:
public static void main (String[] args) throws java.lang.Exception
{
class Foo{ } //occured in the static-context
}
DEMO
尽管在静态上下文中声明了,但
Foo
类的声明还是可以的。尽管不可能在静态上下文中声明内部类。 最佳答案
在称为局部类的块中定义的类,它们可以出现在方法块中的任何位置。在official docs - Local Classes上阅读更多内容:
本地类是在一个块中定义的类,这是一个
括号之间的一组零个或多个语句。您
通常会找到在方法主体中定义的局部类。
对于您的案例,有一个非常相似的示例。
您还可以看到JLS - 14.3. Local Class Declarations:
本地类是嵌套类(§8),它不是任何类的成员
并具有名称(§6.2,§6.7)。
关于java - 了解Java中的本地类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27763487/