質問するログイン新規登録

回答編集履歴

2

変換ミス

2016/07/28 13:54

投稿

maisumakun
maisumakun

スコア147045

answer CHANGED
@@ -1,5 +1,5 @@
1
1
  ローカル変数については、JVMの仕組み上、他のスコープから書き換えるという動作の実装ができないため、`final`あるいは一度しか書き込みのない変数について、**ラムダの生成時にコピーして**渡すような実装になっています。ということで、「内部から書き換えうる」ものを弾くために`final`限定となっています(プライベート変数については、親のクラスに見えないアクセサを作って対応しています)。
2
2
 
3
- 例外については、Javaの検査例外という仕組み上、ラムダから、ラムダを渡すインターフェースに指定されていない検査例外を投げうる形とするとコンパイルエラーになります。なお、検査例外やインターフェースの例外指定があるために投げて構わない例外については(同期実行の場合)ラムダの外側でキャッチできます([参考](http://acro-engineer.hatenablog.com/entry/2014/04/15/121503))。
3
+ 例外については、Javaの検査例外という仕組み上、ラムダから、ラムダを渡すインターフェースに指定されていない検査例外を投げうる形とするとコンパイルエラーになります。なお、検査例外やインターフェースの例外指定があるために投げて構わない例外については(同期実行の場合)ラムダの外側でキャッチできます([参考](http://acro-engineer.hatenablog.com/entry/2014/04/15/121503))。
4
4
 
5
5
  (編注)検査例外も状況によっては投げられるので、書き換えました。

1

検査例外も状況によっては投げられるので、書き換えました。

2016/07/28 13:54

投稿

maisumakun
maisumakun

スコア147045

answer CHANGED
@@ -1,3 +1,5 @@
1
1
  ローカル変数については、JVMの仕組み上、他のスコープから書き換えるという動作の実装ができないため、`final`あるいは一度しか書き込みのない変数について、**ラムダの生成時にコピーして**渡すような実装になっています。ということで、「内部から書き換えうる」ものを弾くために`final`限定となっています(プライベート変数については、親のクラスに見えないアクセサを作って対応しています)。
2
2
 
3
- 例外については、Javaの検査例外という仕組み上、ラムダから検査例外を投げうる形とするとコンパイルエラーになります。なお、検査例外については(同期実行の場合)ラムダの外側でキャッチできます([参考](http://acro-engineer.hatenablog.com/entry/2014/04/15/121503))。
3
+ 例外については、Javaの検査例外という仕組み上、ラムダから、ラムダを渡すインターフェースに指定されていない検査例外を投げうる形とするとコンパイルエラーになります。なお、検査例外やインターフェースの例外指定があるため投げて構わない例外については(同期実行の場合)ラムダの外側でキャッチできます([参考](http://acro-engineer.hatenablog.com/entry/2014/04/15/121503))。
4
+
5
+ (編注)検査例外も状況によっては投げられるので、書き換えました。