没在类中定义匿名内部类为什么编译出现**$1.class文件

Jane_m 2009-10-25 09:59:24

interface ABase {
}

interface BBase {
}

interface CBase {}

class NestedClass {

private static class A implements ABase {

}

public static class B implements BBase {

public static class C implements CBase {
}
}


public static ABase getA() {
return new A();
}

public static BBase getB() {
return new B();
}



public static void main(String[] args) {
ABase aBase = getA();
BBase bBase = getB();

NestedClass.A a = new NestedClass.A();
}


}
...全文
503 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zl3450341 2009-10-26
  • 打赏
  • 举报
回复
每一层内部类由一个“$”符号分隔,有名内部类在 $ 后面的是类的名字,匿名内部类在 $ 后面的是数字,从 1 开始。

学习了
义布寿水 2009-10-26
  • 打赏
  • 举报
回复
有内部类时就这样啊,不过具体的命名方法需要自己掌握啊
Jane_m 2009-10-26
  • 打赏
  • 举报
回复
我查资料:
在方法和作用域之内的内部类会含有数字!
如果是匿名的:Outer$1.class outer$2.class etc.
若果不是匿名的:Outer$1Inner.class Outer$2Inner.class etc.
justinavril 2009-10-26
  • 打赏
  • 举报
回复
class NestedClass {//外部类

private static class A implements ABase { //内部类

}

public static class B implements BBase {//内部类

public static class C implements CBase {//内部类的内部类 我晕
}
}


[Quote=引用 5 楼 jane_m 的回复:]
引用 3 楼 bao110908 的回复:
每一层内部类由一个“$”符号分隔,有名内部类在 $ 后面的是类的名字,匿名内部类在 $ 后面的是数字,从 1 开始。


你看我上面的代码中也没有匿名内部类啊 为什么会生成**$1.class文件?
[/Quote]
Jane_m 2009-10-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bao110908 的回复:]
每一层内部类由一个“$”符号分隔,有名内部类在 $ 后面的是类的名字,匿名内部类在 $ 后面的是数字,从 1 开始。
[/Quote]

你看我上面的代码中也没有匿名内部类啊 为什么会生成**$1.class文件?
  • 打赏
  • 举报
回复
每一层内部类由一个“$”符号分隔,有名内部类在 $ 后面的是类的名字,匿名内部类在 $ 后面的是数字,从 1 开始。
zhoujingxian 2009-10-25
  • 打赏
  • 举报
回复
一楼说对了,只要在一个类的内部,那就是按照那样的规则进行class文件的生成的
rookie001 2009-10-25
  • 打赏
  • 举报
回复
有内部类就会这样,不是一定要匿名类

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧