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

时间:2018-06-02 14:46:49

标签: 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()方法,因此编译器会引发错误。如何将对象类型转换为List类型?

2 个答案:

答案 0 :(得分:2)

您可以将frames变量的泛型从Object更改为List<String>。这样编译器就可以看到列表中的类型,这允许您使用get(...)方法。

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

frames.add(names);

frames.get(0).add("ABCD");

答案 1 :(得分:2)

您有两个选择:

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

    List<List<String>> frames = new ArrayList<List<String>>();
    
  • 获取时使用类型转换。这个不安全,我建议你尽可能避免施法。这里将检查从frames列表中获取的项目是否真的是List本身:

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

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

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