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

如何在java中从对象ArrayList获取ArrayList值?,java,android,object,arraylist,arrayobject,Java,Android,Object,Arraylist,Arrayobject,我有一个对象的ArrayList。我已经在这个ArrayList中添加了一些对象和ArrayList的Strings。我可以很容易地从中获得对象值。现在我的问题是如何从中获取整个ArrayList的Strings 代码段: Person.java public class Person { private String name; private int number; public Learn(String name, int number) { t

我有一个
对象的
ArrayList
。我已经在这个
ArrayList
中添加了一些对象和
ArrayList
String
s。我可以很容易地从中获得对象值。现在我的问题是如何从中获取整个
ArrayList
String
s

代码段:

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<>();
现在,我将在索引2处添加一个字符串列表

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
中获取
strList

使用
instanceof
,通过使用
instanceof
找到
对象
列表中键入

for(对象对象对象:itemsList){
如果(obj instanceof List){//如果它是列表类型,则键入cast
List str=(List)obj;
for(字符串s:str){
系统输出打印项次;
}
}
}
但是根据评论中的讨论,假设您在
List itemsList
中有
List
List
,那么在类型转换时将抛出异常,因为在运行时
List
List
都被视为`列表'

List<String> str = (List<String>) obj;    //exception thrown at this line
List str=(List)obj//在此行引发异常

看一看,所以对每种类型使用通用列表,而不是“列表来添加不同的类型”

为什么要这样制作数组列表?我在android中有一个异构的recyclerView。我想将整个arrayList传递给这个recyclerView,它可以用来将viewPager显示为一个项
List strList=(List)items.getList(…)
,但实际上,为什么呢?因为您正在创建这样一个不同的列表,在检索时,您必须编写
if
条件来检查
索引处的项实例。但这不是一个好的设计
instanceof
也是一项成本高昂的操作。这种方法真是一团糟。为什么不制作一个包含类的接口类型的ArrayList呢。然后让每个类实现该接口。向接口添加一个函数,该函数返回一个标识符。如果我决定向
项目添加另一个
列表
,以供以后使用,那么会发生什么情况?再进一步想想,对我来说,整个设计方法看起来非常容易出错。它会引发异常,为了避免jdk人员引入generic concept@glainst,我想指出的一点是,虽然这确实解决了问题,但如果将其他属性添加到列表中,将来很容易出错。这个注释可以添加到答案中。@Glains这个问题一开始很容易出错。这应该添加到答案中。@FedericoklezCulloca这是真的,但是你仍然可以给出一个好的答案,即使是一个糟糕的问题。
Person person = (Person) itemsList.get(0);
System.out.println(person.getName);  // Alex
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<String> str = (List<String>) obj;    //exception thrown at this line