春分の日に大阪勉強会#28でセッションやってきました。
今回はジェネリクスということで難度の高いネタなんですが、狙いとしてはジェネリクスを使えるようになった先の世界はこんな感じだよ、というのが伝えられたらいいなということで、細かいところはおいておいて設計とかでこんな感じで役立つよという話をメインにしていました。後半部分ですね。
僕としては自重なしにマニアックなネタをしゃべったんですっきり。セッション聞いてもやもやした人は勉強してすっきりさせてください(鬼
ジェネリックメソッド
ジェネリックメソッドについては意図的にスルーしていたのですが、知りたいと言う人のためにさらっと説明しておくと、型変数がメソッドになっただけです。型変数にまつわる制約などはジェネリッククラスの場合の型変数と変わりませんね。
Javaのジェネリックメソッドで特記するべき点は型推論が効くと言う点なのですが、これがまたえらいややこしい話題なのでこれまたセッションではちょっと説明しきれない代物ですね。もっとも私もジェネリクスの型推論については語れるほど理解できていませんし。
キャストのシンタックスシュガー
ジェネリクスを「キャストのシンタックスシュガー」と言った人がいたと記憶していますが、この表現では大事なことを見落としています。確かにキャストの発生する場所全てで漏れなく確実にキャストを入れれるのであれば、ジェネリクスを使った場合と同じ動きをするプログラムになるのですが、「漏れなく確実に」がとても難しいのですね。
このキャストという横断的関心事、つまるところアスペクト指向的なテーマをコンパイル時の全走査で解決しているというのがJavaのジェネリクスです。大事なのは「漏れなく確実に」という部分。「キャストのシンタックスシュガー」という表現ではこの一番肝心なところが伝わらないので表現としてはイマイチではないでしょうか。
ソースコードとか
サンプルのソースコードとかはやっつけで作ってたんで綺麗にまとめてWeb化したいところですね。C#版とかScala版とかを手伝ってくれる人がいたら歓迎します。
ジェネリクス関連エントリ
過去に書いたジェネリクス関連エントリがありますので参考にしてください。
投稿日時 : 2009年3月22日 22:28