Java 如何参数化getParameterNames以避免警告

Java 如何参数化getParameterNames以避免警告,java,servlets,Java,Servlets,我应该如何声明上述方法的返回类型?不确定您引用的方法是什么,但要抑制该方法或语句的警告,请将以下内容放在前面: HttpServletRequest request; Enumeration params = request.getParameterNames(); 它必须在方法声明之前或赋值语句之前。检查(因为HttpServletRequest从其超级接口ServletRequest继承了此方法),它将告诉您此方法返回的内容:java.util.Enumeration,这意

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

不确定您引用的方法是什么,但要抑制该方法或语句的警告,请将以下内容放在前面:

    HttpServletRequest request;
    Enumeration params = request.getParameterNames();
它必须在方法声明之前或赋值语句之前。

检查(因为
HttpServletRequest
从其超级接口
ServletRequest
继承了此方法),它将告诉您此方法返回的内容:
java.util.Enumeration
,这意味着您可能希望尝试:

@SuppressWarnings("unchecked")
HttpServletRequest;
枚举参数=request.getParameterNames();
编辑1:
我不知道为什么会出现第一个错误。也许您必须强制转换从方法返回的值

HttpServletRequest request;
Enumeration<String> params = request.getParameterNames();
HttpServletRequest;
枚举参数=(枚举)请求。getParameterNames();

但老实说,虽然我很擅长使用大多数API,但我不使用servlet,我希望这里的专家能提供帮助。

这个方法是从(JavaEE6)开始参数化的。在(JavaEE5)和之前的旧版本中(以及许多其他版本)未参数化。您显然正在运行Servlet 2.5或更旧版本的容器。您基本上有两个选项:

  • 升级到Servlet 3.0容器(、等),以便

    HttpServletRequest request;
    Enumeration<String> params = (Enumeration<String>)request.getParameterNames();
    
    Enumeration params=request.getParameterNames();
    
  • 进行未经检查的投射

    Enumeration<String> params = request.getParameterNames();
    
    @SuppressWarnings(“未选中”)
    枚举参数=(枚举)请求。getParameterNames();
    

  • -类型安全:类型枚举的表达式需要未经检查的转换才能符合枚举-枚举是原始类型。对泛型类型枚举的引用应该参数化。上面列表中的第二个警告消失了,第一个警告仍然存在。@Jason:请参阅我上面的回答中的编辑1。如果文件是jsp怎么办文件而不是java文件?您不能在那里执行SupersWarning。@elvenbyte:java代码无论如何都不属于JSP文件。只需将其移动到java类中即可。对于一件简单的事情,有时需要做太多的工作…,我想一定有解决方案。
    @SuppressWarnings("unchecked")
    Enumeration<String> params = (Enumeration<String>) request.getParameterNames();