一个JAVA内部类的问题?
来源:百度知道 编辑:UC知道 时间:2024/05/23 18:43:55
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