众所周知,局部类是内部类。 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/

10-10 18:26