如何参数化getParameterNames以避免警告

Jas*_*son 9 java servlets

    HttpServletRequest request;
    Enumeration params = request.getParameterNames();
Run Code Online (Sandbox Code Playgroud)

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

Bal*_*usC 8

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

  1. 升级到Servlet 3.0容器(Tomcat 7,Glassfish 3,JBoss AS 6等),这样你就可以做到

    Enumeration<String> params = request.getParameterNames();
    
    Run Code Online (Sandbox Code Playgroud)
  2. 做一个未经检查的演员.

    @SuppressWarnings("unchecked")
    Enumeration<String> params = (Enumeration<String>) request.getParameterNames();
    
    Run Code Online (Sandbox Code Playgroud)


Hov*_*els 4

查看ServletRequest API(因为HttpServletRequest从其超级接口继承了此方法ServletRequest),它会告诉您此方法返回什么:java.util.Enumeration<java.lang.String>,这意味着您可能希望尝试:

HttpServletRequest request;
Enumeration<String> params = request.getParameterNames();
Run Code Online (Sandbox Code Playgroud)

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

HttpServletRequest request;
Enumeration<String> params = (Enumeration<String>)request.getParameterNames();
Run Code Online (Sandbox Code Playgroud)

但说实话,虽然我非常擅长使用大多数 API,但我不做 servlet,并且非常感谢这里专家的帮助。