如何从 java 中的对象 ArrayList 获取 ArrayList 值?

How to get ArrayList value from a Object ArrayList in java?

我有 ArrayListObject。我向这个 ArrayList 添加了一些对象和一个 ArrayList of Strings。我可以轻松地从中获取对象值。现在我的问题是如何从中获取 String 的全部 ArrayList

代码片段:

Person.java

public class Person {

    private String name;
    private int number;

    public Learn(String name, int number) {
        this.name = name;
        this.number= number;
    }

    public String getName() {
        return name;
    }

    public int getNumber() {
        return number;
    }
}

现在我已经定义了对象列表

List<Object> itemsList = new ArrayList<>();

现在是时候在 itemsList

中添加一些 Person
public void addPerson(){
    itemsList.add(new Person("Alex", 0000062846));
    itemsList.add(new Person("Jack", 0000131332));
    itemsList.add(new Person("Anjela", 0000053715));
    itemsList.add(new Person("Brian", 0000085015));
}

现在,我将在索引 2

处添加一个 String List
public void addList(){
    List<String> strList = new ArrayList<>();
    strList.add("Hello");
    strList.add("How");
    strList.add("are");
    strList.add("you?");

    itemsList.add(2, strList);
}

好的,是时候从 itemsList

中获取值了
Person person = (Person) itemsList.get(0);
System.out.println(person.getName);  // Alex

现在我的问题是:如何从 itemsList 得到 strList

为此使用 instanceof,通过使用 instanceofList<Object>

中找到 Object 类型
for(Object obj : itemsList) {

    if(obj instanceof List) {    //if it is List type then type cast it

          List<String> str = (List<String>) obj;
          for(String s : str) {

             System.out.println(s);

                  }
          }
    }

但是根据评论中的讨论,假设如果 List<Object> itemsList 中有 List<String>List<Integers> 那么 while 在类型转换时会抛出异常,因为在运行时List<String>List<Integers> 都被视为 `List

List<String> str = (List<String>) obj;    //exception thrown at this line

看看 类型擦除 ,因此对每种类型使用通用列表而不是 `List 来添加不同的类型