Java 类文件中的内部类,但不在类主体中?
在遗留应用程序的代码中,我遇到了一个包含内部类的类文件,但这些内部类不是在类主体中定义的,而是在类定义的右括号之后定义的 它看起来像这样:Java 类文件中的内部类,但不在类主体中?,java,inner-classes,Java,Inner Classes,在遗留应用程序的代码中,我遇到了一个包含内部类的类文件,但这些内部类不是在类主体中定义的,而是在类定义的右括号之后定义的 它看起来像这样: MyClass.java public class MyClass { // class body } class DataStructure1 { String field1; Integer field2; } class DataStructure2 { Date field3; String
MyClass.java
public class MyClass {
// class body
}
class DataStructure1 {
String field1;
Integer field2;
}
class DataStructure2 {
Date field3;
String field4;
}
显然,编译器没有抱怨,但我很恼火,因为我以前从未见过这样的事情
- 这是有效的内部类吗李>
- 正文中定义的类有什么不同吗(缩进除外)
.java
文件中有多个类定义是完全可以接受的
顾名思义,内部类必须在包含外部类的内部定义。这里的情况并非如此。:“内部类是未显式或隐式声明为静态的嵌套类”,“嵌套类是其声明发生在另一个类或接口主体内的任何类。”。它们不在另一个类的主体内,因此它们不是内部类。如果知道要查找什么,阅读某些内容总是很容易的谢谢你的链接。在有内部类之前,有包本地类。这可从Java 1.0获得。@PeterLawrey我知道“包私有”类的(非)修饰符。我不知道的是,在一个类文件中声明多个类的可能性。唯一的限制是最多只能声明一个顶级公共类。你是如何为一个已经重复的问题添加答案的?@Codebender Brilliant question。我想安迪在我发布之前就已经标记了副本,但实际上我是在他标记副本之前开始写作的。因此,似乎只要你开始回答,So引擎就会让你得到答案。@TimBiegeleisen我读过的行为应该是这样的,但我发现如果问题被标记为重复,即使我已经开始写作,按钮也会变灰。一个“酸与最终一致性”的案例“马库斯密特劳尔可能是这样的。