サーブレットAPIとGenerics

超今更だけれど、サーブレットAPI(2.5以前)は後方互換性のためにジェネリックス無視しているので、EnumerationやMap返すメソッド使うときに警告がでる。


Java1.4以前でこう書いてたのは

Enumeration names = request.getParameterNames();
while (names.hasMoreElements()) {
    String name = (String) names.nextElement();
    //...
}


Java5以降だとこう書く

@SuppressWarnings("unchecked")
Enumeration<String> names = request.getParameterNames();
while (names.hasMoreElements()) {
    String name = names.nextElement();
    //...
}

個々の場面で気分でSuppressWarnings書くのはよくないので、OurServletRequestUtilsとかOurServletRequestWrapperみたいな共通部品を作って処理をするのがよいと思われる。


ようやっとリリースされたServlet3.0ではAPIジェネリックス対応したので、SuppressWarningsは不要

Enumeration<String> names = request.getParameterNames();
while (names.hasMoreElements()) {
    String name = names.nextElement();
    //...
}