内部 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;
}
显然编译器没有抱怨,但我很生气,因为我以前从未见过这样的事情。
- 这个 inner classes 有效吗?
- 与正文中定义的 classes 有什么不同吗(缩进除外)?
据我所知,这些根本不是内部 classes,而是另外两个私有包 classes,它们恰好在同一个源文件中。在给定的 .java
文件中有多个 class 定义是完全可以接受的。
Innerclasses,顾名思义,必须定义inside一个包含outerclass。这里不是这种情况。
在遗留应用程序的代码中,我刚刚遇到一个 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;
}
显然编译器没有抱怨,但我很生气,因为我以前从未见过这样的事情。
- 这个 inner classes 有效吗?
- 与正文中定义的 classes 有什么不同吗(缩进除外)?
据我所知,这些根本不是内部 classes,而是另外两个私有包 classes,它们恰好在同一个源文件中。在给定的 .java
文件中有多个 class 定义是完全可以接受的。
Innerclasses,顾名思义,必须定义inside一个包含outerclass。这里不是这种情况。