Unchecked cast警告が出たら普通は以下のようにinstanceofで型チェックしてからCastするよう修正する。
if (obj instanceof String) { return (String) obj; }
でも型パラメータはコンパイル後に消えるのでinstanceofで厳密に型チェックできない
if (obj instanceof List<String>) { // これはコンパイルエラーになる。List<?>ならコンパイル通るけど、それではList型であることしかわからないので、必ずしもList<String>にCast出来ないのであんまり意味ない return (List<String>) obj; }
なので @SuppressWarnings("unchecked")
をメソッドに付けて警告を抑止するしかない。
コンパイル後も型パラメータを残して欲しかったなぁ。。
参考:
http://www.ibm.com/developerworks/jp/java/library/j-jtp01255/#4.0