我们学习JAVA是用的耿祥义版的第六版JAVA2实用教程,这本书上说的是“匿名对象创建对象时要直接使用父类的构造方法”,感觉说的是匿名类没有构造方法,学校教的也是匿名类没有构造方法。可我在CSDN看的知识点总结里面说,因为匿名类也会生成字节码文件,所以匿名类也有构造方法,那我就很疑惑了!
public class InnerClassTest {
public static void main(String[] args) {
Comparator<Integer> comparator = new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1.compareTo(o2);
}
};
}
}
编译后使用会发现存在 InnerClassTest$1.class , 使用 javap -v javap -v InnerClassTest$1.class 去查看字节码
由此可见是存在构造方法的
匿名类有构造方法
class InnerTest$1 extends Test
这个类中有一个成员final InnerTest this$0;我想这应该是该内部类所在的外部类InnerTest的引用
这个匿名内部类的构造方法是:
InnerTest$1(InnerTest, int);