匿名の内部クラスとは異なり、Java 8のラムダは、囲む(親)クラスへの参照を保持しません。ラムダ用Android N adds supportAndroid N jackコンパイラのlambdaは、囲むクラスへの参照を保持していますか?
しかし、彼らはリンク状態でのノートとして、下位互換性のために匿名内部クラスを使用してJack
コンパイラに実装されています。
これはAndroidのクラスでラムダは、ジャック(とないretrolambda)を使用してコンパイルすることを意味していますが囲んでいるクラスへの参照を保持しますか?
私は多くの人々がラムダ興奮した一つの理由は、それらを使用する場合Fragment
またはActivity
漏洩を避けるためですが、チラッと見では、それがその恩恵を与えることはありませんjack
コンパイラを使用してのように見えることを知っています。
[Java8のlambdaは、匿名クラスのようなその囲むインスタンスへの参照を保持していますか?](http://stackoverflow.com/questions/28446626/do-java8-lambdas-maintain-a-reference-to-their -enclosingインスタンス様匿名) –
@AndreClassenは、その質問には、ジャックをカバーしていませんが、retrolambdaもバイトコードレベルで匿名内部クラスにラムダを逆コンパイル場合あなたは正しい、それはだまされやすい人である可能性があります。 –
Btw、Java 8のラムダが囲むインスタンスへの参照を保持しないという仮定は間違っています。もちろん、インスタンス変数を取得する必要がある場合はもちろんです。私はほとんどがクリアされ、メモリリークが発生しない場合の断片や活動への参照を保持する匿名の内部クラスリスナーを作成するアンドロイドパラダイムを考えていたので、 –