[英]How to get ArrayList value from a Object ArrayList in java?
我有一个Object
的ArrayList
。 我添加了一些对象和ArrayList
的String
s到该ArrayList
。 我可以轻松地从中获取对象值。 现在我的问题是如何从中获取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处添加一个字符串列表
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
现在的问题是:我怎样才能strList
从itemsList
?
使用instanceof
,通过使用instanceof
在List<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>
,那么在类型转换时将抛出异常,因为在运行时List<String>
和List<Integers>
都被视为`List
List<String> str = (List<String>) obj; //exception thrown at this line
看一下Type Erasure ,所以使用每种类型的通用列表而不是`List来添加不同的类型
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.