消除强制类型转换警告的最优雅的方式是什么?

2022-07-22 11:52:36 +08:00
 7911364440
类似`(List<String>) obj`这样的代码编译器会提示`Unchecked cast: 'java.lang.Object' to 'java.util.List<java.lang.String>'`这样的警告,看着很难受。
在网上搜了下几乎千篇一律都是使用`@SuppressWarnings("unchecked")`忽略警告,想问一下有没有更优雅的处理方式?
1748 次点击
所在节点    Java
6 条回复
Saxton
2022-07-22 11:56:28 +08:00
new 一个新的 list ,手动 add 过去( doge
zed1018
2022-07-22 12:00:42 +08:00
objectMapper.convert(from, type) ?
AoEiuV020CN
2022-07-22 12:06:29 +08:00
眼不见为净,封装一个工具类,工具类里 SuppressWarnings ,外面调用就没有警告也不用忽略警告了,
siweipancc
2022-07-22 12:16:02 +08:00
List<?> 即可,下边 toString
nothingistrue
2022-07-22 13:48:27 +08:00
这个警告的原因,不是强制类型转换,而是 List 到 List<String> 加泛型。

如果你需要的是 List 而不是 List<String> 那么用 List<?> 或 List<Object> 代替 List<String>。

如果你需要的就是 List<String> ,并且确定返回的就是 List<String>,那么 @SuppressWarnings("unchecked") 就是最优解。

如果你不能 100% 确定返回的是 List<String>,那么还得用 List<?> 或 List<Object> 接受变量,然后 if (get(i) instanceof String){...} else {...}
wolfie
2022-07-22 18:29:05 +08:00
public static <T> T cast(Object object) {
return (T)object;
}

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/867962

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX