JJUG CCC 2013 Springのさくらばさんのセッションで「Java 8の怖い話」として、Lambda式をJVM上で実行するにあたり、 invokedynamicを使っている Lambda式の仕様は、意味的にはSamタイプを継承する内部クラスのインスタンスのはずだが、lambda式を使っているJavaソースをコンパイルしても、内部クラスに対応する.classファイルが生成されない という話を聞きました。Lambdaの実行に、内部的にバイトコードを生成して使っている、という話だったのですが、indy使ってるってのは、良く考えると解せないです。Lambdaになんらかの動的な側面があるんでしょうかね??? ということで、調べてみました。 [:contents] 結論 結論から書くと、OracleのJava8のJDKのJavacは、Lambda式の本体を、SAMタイプを継承する内部クラス
![Java8におけるindyとLambdaの絶妙な関係、もしくはSAMタイプを継承する内部クラスの.classファイルはどこへ行ったの? - uehaj's blog](https://cdn-ak-scissors.b.st-hatena.com/image/square/25ddcc4a7fa6133abba5ec30488a1bf8e07e41f3/height=288;version=1;width=512/http%3A%2F%2Fwww.publickey1.jp%2Fblog%2F11%2Fjavaone201117.jpg)