匿名内部类是怎么回事

来源:互联网 发布:淘宝关注链接怎么获取 编辑:程序博客网 时间:2024/04/19 18:14

匿名内部类真的很神秘的,不过,这种类就喜欢做一些神秘的东西。想想,匿名内部类,根本就没有名,怎么写它的构造函数呀?如里是一个默认的构造函数,如果带上了参数这又应该怎么办?很神秘的东西。

看一段代码:

abstract class B{public B(int i){System.out.println("i="+i) ;}abstract public void play() ; } class Bout{public void show(int a,final int b){    new B(a){public void play() {int c = b ;}};}}

这个代码编译不会有问题,会出现三个class文件的,对于Bout类就产生了两个class文件(Bout.class与Bout$1.class),这里面其实有些很隐含的东西的,反编译一下class文件来看看:

对于Bout类:

这里竟调用了Bout$1的三个参数的构造函数。

看看Bout$1真的有三个参数的构造函数吗?

里面真的有三个参数的构造函数呀,还调用了一个父类的一个参数构造函数了。这里编译器还给它生成了一个val$b的变量,把第三个变量放到这里面去了,这个就实现了构造函数的功能了;再看那个调用了父类的那个参数,其实就是第二个参数。就是这样子了。看多几眼上面的图,就明白。 
原创粉丝点击