【问题标题】:How to get rid of @SuppressWarnings tag?如何摆脱@SuppressWarnings 标签?
【发布时间】:2015-06-29 22:49:20
【问题描述】:

我正在尝试拆分字符串并将内容加载到这样的地图中:

@SuppressWarnings("unchecked")
Map<String, List<String>> holder = gson.fromJson(response.split("server=")[1],
        Map.class);
for (Map.Entry<String, List<String>> entry : holder.entrySet()) {
    for (String hosts : entry.getValue()) {
        serverList.add(hosts);
    }
}

我的字符串是这样的:

server={"ABC":["PQR"],"DEF":["HELLO"],"TYU":[]}

现在你可以看到我有 @SuppressWarnings("unchecked") 来删除 Eclipse 生成的警告。这是我收到的警告消息:

Type safety: The expression of type Map needs unchecked conversion to conform to Map<String,List<String>>

现在我的问题是 - 除了添加 SuppressWarnings 标签之外,还有其他方法可以删除此警告消息吗?

【问题讨论】:

  • 不,否则该方法必须返回具有正确模板值的特定映射,而不是通用映射。这背后的原因是您知道地图实际上是未选中的,因此您不能责怪 Java 的“怪异”。另一方面,您为什么要删除它?
  • 让我们直截了当,你想抑制@Suppress?这一切将在哪里结束?

标签: java json dictionary casting gson


【解决方案1】:

你可以使用TypeToken

final Type type = new TypeToken<Map<String, List<String>>>() {}.getType();
final Map<String, List<String>> holder = gson.fromJson(response.split("server=")[1], type);

阅读here 了解TypeToken 的工作原理

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-26
    • 1970-01-01
    • 2011-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多