• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ラムダ式とかデリゲートっぽい感じのことについて)

Javaの独自のデリゲートについて

このQ&Aのポイント
  • Javaにおいて独自のデリゲートを使用する際のコードの書き方について解説します。
  • ラムダ式がJavaに導入される可能性についても触れながら、コードの書き方を検討するタイミングについて考えましょう。
  • 今の段階では、ラムダ式がまだ導入されていないため、独自のデリゲートを活用する場合には特定の書き方をする必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

Java SE 8のリリースは来年の夏らしいけど、 それまで待つとなると、ずいぶんと長期的なスケジュールになりますね。 まず、そんな長期スケジュールで問題ないのかということ。 あと、開発中にVMのメジャーバージョンが変わるとなると、 コーディング済みの部分も修正が入るんじゃないかとか、 そっちの方が心配です。

LongSecret
質問者

お礼

どうもどうも ご回答ありがとうございます♪ >Java SE 8のリリースは来年の夏らしいけど、 それまで待つとなると、ずいぶんと長期的なスケジュールになりますね。 そこですよねw 実は質問投稿完了するまでは時期知らなかったのですが 「あれまてよ、次っていつなんだろう?」 って思って私も調べてみて 「これは長いなぁw」 と思ってた次第です。 今直接的にJavaのプログラムを作らないといけない理由はないのですが おそらくほぼ、数ヵ月以内に作る必要が生じそう で、しかし現在製作中のC++での超本格アプリと比べると その「必要とされるプログラムの規模」は結構小さくて済むと思うのと 端から端まで自分で管轄できることが予想されるため とりあえずはJava 7にあわせて(こういう手法は出来るだけ最小限になるように)書いといて 8がリリースされたら 気の向いた部分を気の向いたときに 修正する という風にするのが現実的に思います。 しかし、ちょっと疑問が生じました。 上記のようにJava 7でこういう事やろうとした場合 final int num___ = 310; //匿名クラスを作り、Doをオーバーライド final boolean b = ml.Exists( new Func<Integer,Boolean>(){ @Override public Boolean Do(Integer t1){ return t1.equals(num___); }}); こんな風に「finalなローカル変数」だと、匿名(やインナー)クラスで表記上使える (というより、「使えてほしいと思ってなかったのに、ほんとは使えてしまう」) と思うんですが なぜこうなるかというと http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1042755330 のように、コンパイラが内部的にコピーを行っているからって事のようなんですが 「インナークラスで使ってないfinalなローカル変数」は 「勝手にコピーされることはない」 のでしょうか? 可読性のためにローカル変数を固定してるだけなのに、勝手にコピーが出来ちゃうとしたら 非常に厄介なのですが んなこたぁない、かな…?

LongSecret
質問者

補足

まだしばらく先になりそうなので しばらく様子見で問題なさそうですが、流石に後一年はまだ長いかな でも進展がないのでいったん締め切ることにします。(5/26) ありがとうございました。

関連するQ&A