检测 Object 是不是为 List<String> [重复]
Posted
技术标签:
【中文标题】检测 Object 是不是为 List<String> [重复]【英文标题】:Detect if Object is a List<String> [duplicate]检测 Object 是否为 List<String> [重复] 【发布时间】:2016-10-01 13:21:44 【问题描述】:我想确定我得到的对象是否是一个字符串列表。 这是我的代码:
Object obj = plugin.getConfig().get("groups");
if(obj instanceof List<?>) // Is the Object a List ?
List<?> list = (List<?>) obj;
if(list.get(0) instanceof String) // Does the List contain Strings ?
List<String> groupList = (List<String>) list;
但是 Eclipse 说第 5 行的最后一次转换是不安全的:
类型安全:未经检查的从 List
转换为 List
我该如何解决这个问题?我也试过了
List<String> groupList = (List<String>) obj;
...但我仍然得到同样的错误(基本上)。
【问题讨论】:
这只是一个警告。你的代码不起作用吗? “修复”是什么意思? Eclipse 说它是不安全的,因为它在一般情况下是不安全的:想象一个List<Object>
,其中第一项是String
。
【参考方案1】:
底线是,如果要对整个列表进行强制转换,则无法阻止此警告,只能使用注释来抑制它。
请参阅此答案以获得解释(它是关于 Map 而不是 List,但适用相同的原则):How do I address unchecked cast warnings?
如果您想要没有不安全强制转换和没有注释的代码,您可以采用上述问题中接受的答案中的方法:不要强制转换列表本身,而是遍历List<?>
并强制转换每个人Object
到String
。
【讨论】:
以上是关于检测 Object 是不是为 List<String> [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何将两个List<Map<String,Object>>合并为一个
C# 将Object类转化为List<T>类,其中T的类型不是object类型。
检查 List<Dictionary<string,object>> 中是不是存在 Dictionary<string,object>? [关闭]