質問: 最近、JDK を使っていて思ったのですが、javac でコンパイルしたときに 変わったクラスファイルがでてくるのですが・・・ たとえば、 MainFrame.class の他にMainFrame$1.class があったりします。 これがないと実行できません。 これはいったいなんなんでしょうか? どうか、教えてください。 お願いします。
回答: MainFrame.javaの中でanonymous class(無名クラス/匿名クラス)を定義していますね? Javaには「一つのクラス定義=一つのクラスファイル」という原則があります。 MainFrame.javaの中で複数のクラスを定義しているわけですが、anonymous classは「$」が付いたクラスファイルになります。 参考URL: