Sessionのキャストを省略する
Struts2でコーディングしているときに、ふと、、、sessionのキャスト省略できるんじゃ?と思いました。
普通は、ActionクラスでSessionAwareを実装して下記のようにsessionから値を取得できます。
String a = (String) session.get("key");
でもこれって、、いちいちキャストするのが面倒。。
というわけで、こんなメソッドを作ってあげて、取得する。
@SuppressWarnings("unchecked") private <T> T getSession(String key){ return (T)session.get(key); } // how to use String a = getSession("key");
これを Actionクラスの Abstractなクラスに書いてあげて、Extendsして使うと。
ちょっと気持ち悪いけど、便利じゃないか?コレ?
気づいていないだけで、落とし穴があったり。。
2013.10.09
下記 突っ込みを受けたので、調査予定
そもそも、sessionから値を取得するとこがおかしいのでは?
struts2なんだから、ジェネリクスの思想が組み込まれてるはずだから、キャストしないで済む方法がありそう。