Java5脳の恐怖
EclipseユーザのためのNetBeans環境とプラグイン開発入門
(3/3):CodeZineを読んでて。
なんでCookieなんだろうか、とか思いつつ、サンプルコードをみてたらなんかあれだなぁと。
Cookie cookie = this.dataObject.getCookie(SaveCookie.class); // もしも、cookieがnullだった場合にはその処理ができないことを示す if(cookie != null){ SaveCookie saveCookie = (SaveCookie)cookie; // SaveCookie独自(保存処理)の処理を行う saveCookie.save(); }
上記のコードとかみるとメソッドジェネリクスで
SaveCookie cookie = this.dataObject.getCookie(SaveCookie.class); // もしも、cookieがnullだった場合にはその処理ができないことを示す if(cookie != null){ // SaveCookie独自(保存処理)の処理を行う cookie.save(); }
ででええやんとか思う。
そうか、もうすっかりJava5な頭なのか。自分。
まあ、NetbeansはJava5専用じゃないので仕方がないよね。
さらに欲を言えば、nullチェックが面倒なので、
SaveCookie cookie = this.dataObject.getCookie(SaveCookie.class); assert (cookie != null && (cookie instanceof NullCookie || cookie instanceof SaveCookie)); cookie.save();
と、NullObjectパターンを使ってしまえば、書く方は楽になるなあとか。
NullObjectパターンは賛否両論のあるデザインパターンですが、自分はワリと好きなほう。
追記、の前に
一回書いたのに、サブミットしたらエラー画面になって消えた。はてダ超萎える。
けど、もう一回書く。
というわけで、超ダイジェスト追記。
追記(ダイジェスト)
この、getCookie()メソッドから特定の処理用のCookieを取得し、取得したCookieがnullでないかnullかで、その処理ができるかできないかを判断するのは、NetBeansでは標準的な方法です。
ってあるので、NullObjectじゃムリだね。
「できるかできないか」判定した結果、「何をするか」ってところのAPI確定しきれないもんね。
NullObjectにメソッド用意できないもんね。
追記、の後に
うん。ダイジェストでも特に内容的には問題ないね。
むしろ簡潔になった。
ありがとう、はてダのエラー画面。
これからもどんどんエラーを出して、強制的に校正のチャンスを与えてください。