java - 如何将 Object 类型转换为 List<Object> 类型?

标签 java list generics arraylist collections

List<Object> frames = new ArrayList();
List<String> names = new ArrayList();

frames.add(names);

//compiler error
frames.get(0).add("ABCD");

由于 .get() 返回对象类型,而对象类型没有 .add() 方法,因此编译器会引发错误。如何将对象类型转换为列表类型?

最佳答案

你有两个选择:

  • 更改 framesList<List<String>>如果列表frames将始终包含一个字符串列表。它是安全的,但仅限于一种类型。

    List<List<String>> frames = new ArrayList<List<String>>();
    
  • 获取时使用类型转换。这并不安全,我建议您尽可能避免进行类型转换。此处将检查是否从 frames 获取了项目。列表本身就是一个列表:

    Object first = frames.get(0);
    if (first instanceof List) {
        ((List<String>) first).add("ABCD");
    }
    

此外,尽量避免原始类型。在这种情况下使用钻石 <>声明中的运算符:

List<Object> frames = new ArrayList<>();
List<String> names = new ArrayList<>();

关于java - 如何将 Object 类型转换为 List<Object> 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50658065/

相关文章:

.net - 如何检查IEnumerable是否为列表?

python - 计算字符串python中的字母

C# 将字符串变量转换为对象类型引用

java - 在JavaFX中插入MYSQL数据库时出错

java - 从 SVG 文件创建非缓冲的 java.awt.Image

java - 如何根据 TestNG + Selenium WebDriver 中的运行结果选择下一个 @Test 方法?

python - 在遍历列表范围的循环中删除对象?

java - 自动设置 Eclipse 工作区(导入项目、目标平台和首选项)

c# - C# 7.0 中的泛型函数和 ref 返回

java - 我们可以在运行时从泛型类型实例化一个对象吗?