匿名内部类是怎么回事

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

看一段代码:

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的变量,把第三个变量放到这里面去了,这个就实现了构造函数的功能了;再看那个调用了父类的那个参数,其实就是第二个参数。就是这样子了。看多几眼上面的图,就明白。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值