人によってはほとんど見かけない Java 文法
独断と偏見でランクをつけてみました。
レア度 F : abstract
よく IT ゼネコンさんが気にかける「一山なんぼのプログラマ」はほとんど見ることがないし、なんのためにあるのかもわからないでしょう。元 COBOLer でよれよれになりながら Java をやっている古兵の方々も気にもかけないキーワードかもしれません。
もちろん、基底クラスを作る役目の人、フレームワークなどを作っている人はたくさん見ていることでしょう。
レア度 E : 大域脱出
↓こういう書き方。大域脱出が必要なケースって意外とないんですよね、Java って(C だとしょっちゅうだったような気がしないでもない)。
hoge: for(String[] foo : fuga) { for (String bar : foo) { if (bar.equals("xxx")) { break hoge; } } }
レア度 D : synchronized、volatile
マルチスレッドプログラミングには必須の文法ですが、たとえばマルチスレッドで動いているはずの Servlet に関するプログラミングですら、よくできた Web アプリケーションフレームワークのおかげでほとんど synchronized なんて意識する必要がないですよね。
また、正しい使い方がわかっている人も意外と少ないのではないでしょうか?
レア度 C : transient
Eclipse のおかげで何か知らないけど serialVersionUID はつけてるぜ!と言う人は増えてきたかもしれませんが、transient をつけなければならないようなハメになるケースは意外と少ないかもしれません。でも意外と Wicket 使いの人は使っているかも?!
レア度 B : native
Java 道を邁進し、「Write once, run anyware」の標語を信じ続けてきたある意味での Java 原理主義者の方こそ見る機会がすくないかもしれません(逆に組み込み向けがそもそもの Java の姿だ!という意味での原理主義者にとっては native はあってなんぼでしょうが)。
レア度 A : strictfp
どういうときに必要になるのか、私もよくわかりません。科学技術計算分野でしょうか?