2012年12月30日日曜日

第5回 Java7はここが違う!


前回<>次回

登場人物
  • NRT
    猪突猛進なプログラマー
    考える前に体力勝負でプログラミングするタイプ。
    たまに鋭い洞察力を見せるため、
    周囲からは落ち着いてさえいれば…と言われている。
  • SSK
    冷静沈着なプログラマー
    20:80の法則に習い、実は仕事の一部分を学習に当てている。
    他の人はそれに気がついていない。
    Java7についても以前からチェックはしていた。
  • SKR
    紅一点なプログラマー
    暗算は早いけど、プログラミングはそこそこ。
※登場人物は忍者ではありません。架空のプログラマーです。

新機能:Improved Compiler Warnings and Errors When Using Non-Reifiable Formal Parameters with Varargs Methods


~~~ 社内 - 会議室 ~~~


SSK「どうして…こうなった…」

SKR「仕方ないわね、本当にJava 7を使うことになっちゃったんだし。」

NRT「へへっ!腕が鳴るってばよ!」

SSK「とりあえず、構文のみに絞るからな。
       クラスの変更や追加は流すくらいにしかやらない。
       せっかくだし新しいJavadocにでも慣れればいい。」

SKR「新しいJavadoc?Java 6とどう違うの?」

SSK「ハッキリ言って別物に見えるくらい違う。
       …そんなことよりも、今回の本題を始めるぞ。」

NRT「よっしゃー!どんとこい!」

SSK「今回は強化された警告について説明する。
       とりあえず、この2つのソースを見てくれ。」

*ひとつめ*
List fooList = new ArrayList<number>();
List<string> barList = fooList;

*ふたつめ*
public static <t> void foo(List<t> list, T... elements) {
    // 何かの処理
}

public static void bar(List<string>... l) {
    // 何かの処理
}

SSK「Java7では、こいつらは警告扱いになる。」

NRT「ど、どういうことだってばよ!?」

SKR「ひとつめは分かるわ。…というより、今まで警告が無かったの?」

SSK「そうらしいな。
       ひとつめは総称型が違うものへの代入、
       ふたつめは…可変長引数の使い方だな。」

NRT「あ!俺もひとつめは分かったってばよ!
       でもふたつめがぜんぜんわかんねぇぇ…」

SKR「もしかして、可変長引数にListを使っているのがいけないのかしら?」

SSK「そう思っていてだいだい間違いはないと思う。
       具体例が出せなくて悪いが、
       この実装を避けるように組んでくれればそれでいい。」

NRT「なら簡単だってばよ!」

SSK「おまえにこんな処理が必要な箇所は任せないから安心しろ。」

NRT「な、なにお〜!」

前回<>次回

0 件のコメント:

コメントを投稿