编译后class$1,class$2,class$innerclass中的$的含义
本文转自:http://www.cnblogs.com/stefanlee/p/3403445.html
class文件名中的$的含义如下:
$后面的类是$前面的类的内部类
内部类有以下两种情况:
1.普通的组合类形式,即在一个类内部定义一个普通的类
1
2
3
4
5
6
7
8
9
10
|
public class Outer { class Inner { public Inner { } } } |
javac Outer.java后会出现两个class文件:
Outer.class
Outer$Inner.class
2.在一个类内部定义一个匿名类(一般是接口interface)
1
2
3
4
5
6
7
8
9
10
11
12
13
|
//定义一个接口 public Interface Test { public void test(); } //进入正题 public class Outer { public Test test1 = new Test(){ public void test() {Sysem.out.println( "test1" )} } } |
此时会产生以下两个类:
Outer.class
Outer$1.class
其中$1代表的就是Outer类里面的new Test(){}这个匿名类
作者:习惯沉淀
如果文中有误或对本文有不同的见解,欢迎在评论区留言。
如果觉得文章对你有帮助,请点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
扫码关注一线码农的学习见闻与思考。
回复"大数据","微服务","架构师","面试总结",获取更多学习资源!