内部 class 在 class 文件中但不在 class 正文中?

Inner class in class file but not in class body?

在遗留应用程序的代码中,我刚刚遇到一个 class 文件,其中包含内部 classes,但那些内部 classes 未在 [=33] 中定义=] body 但在 class 定义的右括号之后。

看起来像这样:

MyClass.java

public class MyClass {

    // class body

}

class DataStructure1 {

    String field1;

    Integer field2;

}

class DataStructure2 {

    Date field3;

    String field4;

}

显然编译器没有抱怨,但我很生气,因为我以前从未见过这样的事情。

据我所知,这些根本不是内部 classes,而是另外两个私有包 classes,它们恰好在同一个源文件中。在给定的 .java 文件中有多个 class 定义是完全可以接受的。

Innerclasses,顾名思义,必须定义inside一个包含outerclass。这里不是这种情况。