匿名内部类
先来看一段匿名内部类的代码,
这里需要先定义一个 抽象类 ,
大家应该都知道一个典型的匿名内部类是这样子的,
对比与非匿名内部类,
匿名内部类省去了实现一个 Person的具体类的步骤,
比如说上面的代码可以用这样的非匿名内部类来实现,
匿名内部类的核心
使用匿名内部类,省去了新建一个类的过程。
虽然代码上看起来少了这个类,但其实在 字节码 中,还是有生成一个类的,
比如上面的代码 Demo 类,在编译后会生成两个文件,
Demo.class Demo$1.class
可以用
javap -c Demo$1.class
来看看字节码里做了什么
可以看到,其实Demo$1就是一个标准的类,
相当于一个 Student类,
虽然我们没有继承 Person实现一个具体的类,
可是Java帮我们做了这件事,
如果你的开发经验足够丰富的话,有 反编译 的经验,
就会看到在一些jar包里有大量的12为后缀的 class文件 ,
其实这些都是匿名内部类来着。
所以现在知道匿名跟内部类是什么意思了吧。