之前被面试的时候,被问到一个问题: JVM在什么情况下会生成Class文件 。这个问题看似简单,想要答好答全却不容易,很考验对java、JVM的认识和面试者的发散性思维。故特在此进行总结。
java文件编译后
这个情况就不多说了,.java文件被编译器通过javac编译后,会生成.class文件。
内部类编译后
在一个类里如果有内部类,则编译是会产生两个class文件,一个类class 一个是内部类class。
匿名内部类编译后
匿名内部类编译后会生成class文件,类名则为OutClass$数字(OutClass$1,OutClass$2,OutClass$3)。如果我们增加匿名内部类,再次编译,则会数字会递增。