如何参数化getParameterNames以避免警告

时间:2011-06-11 05:25:53

标签: java servlets

    HttpServletRequest request;
    Enumeration params = request.getParameterNames();

我应该如何声明上述方法的返回类型?

3 个答案:

答案 0 :(得分:8)

此方法自Servlet API 3.0(Java EE 6)以来已参数化。在诸如Servlet API 2.5(Java EE 5)之类的旧版本中以及此方法(以及许多其他方法)之前未参数化。你显然正在运行一个或更旧的Servlet 2.5容器。你基本上有两个选择:

  1. 升级到Servlet 3.0容器(Tomcat 7Glassfish 3JBoss AS 6等)以便您可以

    Enumeration<String> params = request.getParameterNames();
    
  2. 进行未经检查的演员。

    @SuppressWarnings("unchecked")
    Enumeration<String> params = (Enumeration<String>) request.getParameterNames();
    

答案 1 :(得分:4)

查看ServletRequest API(因为HttpServletRequest从其超级界面ServletRequest继承此方法,它会告诉您此方法返回的内容:java.util.Enumeration<java.lang.String>,这意味着你不妨试试:

HttpServletRequest request;
Enumeration<String> params = request.getParameterNames();

编辑1:
我不确定你为什么会收到第一个错误。也许您必须强制转换从方法返回的值?

HttpServletRequest request;
Enumeration<String> params = (Enumeration<String>)request.getParameterNames();

但说实话,虽然我非常擅长浏览大多数API,但我不做servlet,并希望得到专家的帮助。

答案 2 :(得分:0)

不确定您引用了哪种方法,但是要禁止该方法或语句的警告将其置于其前面:

@SuppressWarnings("unchecked")

必须在方法声明之前或在赋值语句之前。