Genericsを使った型キャスト
Genericsを使って引数を任意の型にキャストする関数を書いてみました。クラス名が長くても、これを使うと簡潔にキャストすることができます。
/** * オブジェクトを望みの型にキャストする。 * @param <T> キャスト後の型 * @param o オブジェクト * @return キャストしたオブジェクト */ static <T> T as( Object o ) { return (T) o; }
サンプルは以下。キャストする型であるTを明示していないのがポイント。Tは代入先の型などを見てコンパイラが良きに計らってくれるらしい。(→Java Generics FAQsを参照)
Object x = "x"; // キャストしたいオブジェクト Object o = as( x ); // OK String str = as( x ); // xは文字列なのでOK Integer i = as( x ); //ClassCastException発生。