java编译后的文件出现xx$1.class原因分析

java编译后的文件名字带有$接数字的就是匿名内部类的编译结果,接名字的就是内部类的编译结果
例如:TestFrame$1.class是在TestFrame类的里面使用了匿名内部类的编译结果,TestFrame $MyJob.class则是在TestFrame类里面使用内部类MyJob编译后得到的.
使用内部类可以隐藏一些实现的细节, 等等, 还有其他一些好处. 使用匿名类的时候, 要注意代码的可读性。
在代码运行过程中,查看对象的地址,显示的就是{类名}@地址数字值,此时如果类名里面有 $符号,除了上面二中情况,还有可能是java动态代理在运行时创建的代理类com.sun.proxy. $Proxy 或者是用使用cglib产生的xxxENhancerBySpingCGLIB

你可能感兴趣的:(java编译后的文件出现xx$1.class原因分析)