ThinkSSL🔒 一键申购 5分钟快速签发 30天无理由退款 购买更放心 广告
## [内部类标识符](https://lingcoder.gitee.io/onjava8/#/book/11-Inner-Classes?id=%e5%86%85%e9%83%a8%e7%b1%bb%e6%a0%87%e8%af%86%e7%ac%a6) 由于编译后每个类都会产生一个\*\*.class\*\* 文件,其中包含了如何创建该类型的对象的全部信息(此信息产生一个"meta-class",叫做**Class**对象)。 你可能猜到了,内部类也必须生成一个\*\*.class\*\* 文件以包含它们的**Class**对象信息。这些类文件的命名有严格的规则:外部类的名字,加上“\*\*$**",再加上内部类的名字。例如,**LocalInnerClass.java\*\* 生成的**.class**文件包括: ~~~ Counter.class LocalInnerClass$1.class LocalInnerClass$LocalCounter.class LocalInnerClass.class ~~~ 如果内部类是匿名的,编译器会简单地产生一个数字作为其标识符。如果内部类是嵌套在别的内部类之中,只需直接将它们的名字加在其外部类标识符与“\*\*$\*\*”的后面。 虽然这种命名格式简单而直接,但它还是很健壮的,足以应对绝大多数情况。因为这是 java 的标准命名方式,所以产生的文件自动都是平台无关的。(注意,为了保证你的内部类能起作用,Java 编译器会尽可能地转换它们。)