如果您使用旧版库,如何避免Java中未经检查的转换警告?

Mnementh:

我喜欢Java中的泛型功能,并经常使用它。但是,如果我使用尚未了解泛型的库,就会遇到问题。servlet是一个示例。如果使用ServletRequest.getParameterMap(),结果将是原始地图,但仅String包括键和String[]值。所以我想将它分配给一个Map<String, String[]>但是对于此作业,我会收到警告。如何避免用语言来避免出现这种警告,而不是简单地通过@SuppressWarnings注释消除警告

可悲的变量:

正如其他人所说的那样,警告只能通过抑制来避免。恕我直言,问题是您要么必须在代码中添加适用于小范围的注释,要么在全局范围内忽略它们,否则可能会导致错误。

IIRC提出了在原始类型将被返回而不是在调用处生成警告的建议。

同时,我认为最好的方法是使用包装器方法,以便将警告限制在一个可以安全忽略它们的地方:

class NoWarn {
  public static Map<String, String[]> getParameterMap(ServletRequest r) 
  {
    @SuppressWarnings("unchecked")
    Map<String, String[]> result = r.getParameterMap();
    return result;
  }
}

注意:此答案的编辑带有注释,注释不能在方法主体内。那是不正确的,以上在语法上是正确的。我已经还原了更改。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用Java泛型避免未经检查的强制转换警告

克隆HashSet时如何避免未经检查的转换警告?

如何解决Flutter警告:您的Flutter应用程序是使用旧版本创建的

使用Mockito时避免未经检查的警告

如何避免在策略模式中使用Java和泛型进行未经检查的强制转换

忽略警告的后果是:java中未经检查的转换

如果您处于“我们不使用例外”阵营中,那么如何使用标准库?

使用旧版数据库跳过ActiveRecord中的UTC转换

如何避免警告类型安全:未经检查就从Object强制转换为ArrayList <Facility>

从Bundle检索Serializable对象时如何避免收到未经检查的强制转换警告

如何抑制未经检查的强制转换警告?

如何使用旧版GCC

未经检查的投放警告-如何避免这种情况?

Java中未经检查的分配警告

在Angular 9中,如果您使用的是指向的URL,如何更改导航链接的HTM1?

从Java中的对象进行转换而不会收到未经检查的警告

Java-使用WatchEvent抑制未经检查的强制转换警告是否安全?

Java未经检查的强制转换为类型参数警告,尽管是

Java未经检查的转换

对返回声明中未经检查的强制转换的警告

使用泛型会导致未经检查的转换警告

如何使用旧版本的Maven?

如何使用旧版本的 sveltekit?

如果您决定重命名类中的字段,如何读取旧的json字符串(使用gson)

如果您使用響應模型,FastAPI 如何將附加信息(如查詢)插入到響應中?

如果您的程序+库不包含SSE指令,使用VZEROUPPER是否有用?

如何将泛型类型存储在缓存中,以避免检索时未经检查的强制类型转换?

使用旧版数据库在Ecto中bigint与整数错误

未经检查的转换警告与泛型