JavaAPI



 常々抱いていた怒りをいつブチまけようかと思っていたのだが、nowokay氏から25日に頂いたアドバイスをキッカケに大噴火。(けっしてnowokay氏が悪い訳ではない。あくまでもキッカケ。)
 その顛末はこうだ。

オーバーライドメソッドには@Overrideをつけるようにするとコンパイルエラーが出るようになります。

 というアドバイスを頂いたが、具体的な使い方が分からない。
 そこでJavaAPI見ることにした(それがそもそも間違っていたのだが・・・)。ググるJavaAPIの@overrideの項が先頭に出るので早速クリック。

java.lang
注釈タイプ Override

                                                                            • -

@Target(value=METHOD)
@Retention(value=SOURCE)
public @interface Override


メソッド宣言がスーパークラスのメソッド宣言をオーバーライドすることを示します。このアノテーション型が付けられたメソッドがスーパークラスメソッドをオーバーライドしない場合は、コンパイラでエラーメッセージを生成する必要があります。


導入されたバージョン:
  1.5

 んーむ。使い方がよく分からない。@interface Overrideの後ろにメソッド名を入れるのだろうか?
 説明文はまさにnowokay氏のアドバイスの内容そのものと言っていいだろう。だが、そもそもメソッドをオーバーライドしているかを判定するはずなのに、そこになぜインターフェイスが出てくるのか?インターフェースのオーバーライドの話なのだろうか?
 そこで使用例の上にあるリンクをたどってみることにした(どういう意味のリンクなのかさっぱり分からんのだが・・・)。
が、やっぱりさっぱり分からない。@Overrideの@Oの字も無いのだ。
早々にあきらめて、ググった結果の次点をさぐる事にする。お?三番目の(筆+日+雑)*記にまさに「@override」「コンパイル」というキーワードがあるではないか!という訳でそこを見てみる。


public class Test extends SuperTest{
@Override
public void test2() {
System.out.println("test");
}
}




全く違うじゃねぇかコラ!!


 ・・・いや、待て。待て待て。早まってはイカン。いきなり直接APIの記事を見たからいけないのかも知れないじゃないか。つまり、APIのもっと上のURLディレクトリから見たら凡例(読み方)が書いてあるのではないか?辞書・辞典のようにそれを読めば実際の使用例が分かるのではないだろうか?(APIの記事を見る限り淡い望みではあるが・・・)
 という訳でさっそくAPIのTOPページに行ってみた。うーむ。この「概要」が怪しいな。あと「ヘルプ」も。念のため「索引」も見ておくか・・・。


 ねーよ。どこにもねーよ。public @interface Override を @Override public メソッド名()に読み替える凡例なんかねーよ!(あるわきゃぁない)。
 では上のURLhttp://java.sun.com/j2se/1.5.0/ja/docs/ja/を見ると・・・お!?「JDKTM 5.0 ドキュメント」?おお!?「Java プラットフォーム初心者のために」!?うおお!クリック!・・・って英語かよぉ!(今風にツッコむなら”欧米かっ”ってところか?)うーむ、STEP3で図入りで結構詳しく解説してるけどやっぱり英語だ。しかも基礎の基礎。あかんわ、他のリンク先もだめだなこりゃ。「JDKTM 5.0 ドキュメント」に戻って・・・むむっ!「Java 2 プラットフォーム API 仕様」だとっ!ってAPIそのものかよぉ!じゃあ「Java 言語仕様 」ならどうだっ・・・て、ぐふっ・・・また英語・・・。”Annotation”で検索してみるが、メソッドのオーバーライドについては書いてないなぁ・・・。最後の希望「Java チュートリアル Java プログラミング言語およびコア API のガイドです (例題を多数含む)。 」ぐほぁっ!これも英語か・・・しかもAPIの読み方とは関係なさそう・・・。
APIはどーなってんだぁ!?


さっぱりわかんねーぞ!!




 ・・・と、まあ、ムキになって公式ページを探したが、個人のボランティアによる紹介ページの内容以上のものは出てこなかった、という結果だった。
 とにかくAPIは素人には読めない。読み方の解説すらない。しかもそれが@Overrideに限ったことではないのだ。素人を追い払うための装置かっ(怒)と勘ぐりたくなると言うものだ。


 それにしてもみんなどうやって正式な記法を学ぶんだろう?と思ったら気がついた。
「そっかー、中級以上のテクニックは有料で教えるんだなー(後は本か)。そうやってSUNは儲けてるのか。」


 ここで俺がブチ切れると思った諸君!甘い、甘いぞ!頑張って無料の言語を開発した会社がそれをネタに資金を回収しようと言うのは当然!そのために独習させないように肝心の情報を隠すのも当然!アコギだが、それが商売というものなのだ。だからそれは認めよう。


 むしろ(筆+日+雑)*記のようなボランティア様がいることの方が有り難いのであって、そっちに感謝すべきなのだろう。(さらに詳しいOverrideアノテーションの使い方は「JDK5を活用する第8回:アノテーション:ページ2」をご覧ください)


 ・・・とか言って、公式のちゃんとした文法書が出回ってたら恥ずかしいな。
でも見つからねーんだよッ!!!悪いかゴルァァァァァァァァ!!!(←やつあたり)


 しかしAPIの作者はあれで何を書いてるつもりなのだろう?ナゾだ・・・。