java - 检测对象是否为 List<String>

标签 java list

<分区>

我想确定我得到的对象是否是一个字符串列表。 这是我的代码:

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 行的最后一个转换不安全:

Type safety: Unchecked cast from List<capture#3-of ?> to List<String>

我该如何解决?我也试过

List<String> groupList = (List<String>) obj;

...但我仍然遇到同样的错误(基本上)。

最佳答案

最重要的是,如果你想对整个列表进行转换,你无法阻止这个警告,你只能用注释来抑制它。

请参阅此答案以获取解释(它是关于 Map 而不是 List,但适用相同的原则):How do I address unchecked cast warnings?

如果您想要没有不安全转换和注释的代码,您可以采用上述问题的已接受答案中的方法:不要转换列表本身,而是遍历 List<?>并类型转换每个人ObjectString .

关于java - 检测对象是否为 List<String>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39807143/

相关文章:

java - 这个方法在 Big O 表示法中如何执行?

java - 图像未导出到 Jar 文件

list - 仅使用构造函数中的列表查找 Lisp 列表中的最小数字?

objective-c - Java 的 List 在 Objective-C 中的等价物是什么?

用于将两个大数相乘的 Java 代码对于某个输入中断工作是否正常?找不到逻辑错误

java - 异常(exception)——立即抛出并接住

python - 嵌套列表转换为python中的一个列表

c# - 从列表中删除项目并同时获取项目

java - 这个生成了多少 Java 对象 - new String ("abcd")

python根据另一个列表的顺序根据属性对对象列表进行排序