一个JAVA内部类的问题?

来源:百度知道 编辑:UC知道 时间:2024/05/23 18:43:55
package cn;

class a {
private class b{
Integer i = new Integer(0);
}
void geti() {
b c = new b();
System.out.println(c);
}
}

这段代码编译以后会产生3个类,其中一个a$1.class是怎么产生的
为什么他是私有的就会产生一个匿名的内部类呢??

内部类是匿名的,编译器会产生数字做标示符我也知道
但是我的这段代码里没有生成内部类的代码啊
可以肯定的是new b().i产生的,但为什么不加Private的时候也只产生两个.class文件呢??

a$1.class是new b();产生的匿名内部类,并非你的class b,因为他是private的。你可以试试去掉private这样就只有2个类了。初步判断是这样,不足之处请指教

如果内部类是匿名的,那么编译器会简单地生成数字,把它们作为内部类标识符使用。若内部类嵌套于其他内部类中,则它们的名字简单地追加在一个$以及外部类标识符的后面。

我之前理解private时错了,但是匿名类的原因,还没有分析透彻

本文将详细的解释内部类,希望和大家交流.

简单的内部类定义形如这样:

class A{

class B{}

}这样的类被称为内部类,又 被称为内隐类.

从简单到深入一步一步的分析内部类的特点.

class OuterClass

{ static class A //静态内部类

{ public A( )

{ System.out.println("Test$A !"); } }

class B //非静态内部类

{ public B( )

{ System.out.println("Test$B !"); } }

public void disp( )

{

final int a=10; int b;

class C //成员函数中的局部内部类

{ public C( )

{ System.out.println(“in class C a="+a);

//System.out.println