假设我有一个Person类,我正在尝试创建一个列表;
Person p1 = new Person("first", "id1");
Person p2 = new Person("dummy", "id1");
Person p3 = new Person("second", "id2");
Person p4 = new Person("third", "id1");
List<Person> asList = Arrays.asList(p1, p2, p3, p4);
现在我的问题不是将单个Person对象传递给Arrays.asList()
我可以传递组合列表,例如
List<Person> asList = Arrays.asList(combinedPersonObjs);
我尝试了很多东西,但是却出现了投射错误。
请帮忙
注意: Person对象的数量是动态的。
答案 0 :(得分:8)
当然,你可以做到
Person[] combinedPersonObjs = { p1, p2, p3, p4 };
List<Person> asList = Arrays.asList(combinePersonObjs);
如果您事先不知道Person
个对象的数量,那么可能您没有为每个对象提供一个变量标识符。我建议你做一些像
List<Person> asList = new ArrayList<Person>();
for (int i = 0; i < numberOfPersons; i++)
asList.add(new Person(ithName(i), "id" + i));
答案 1 :(得分:2)
将所有对象放入数组中并将此数组传递给Arrays.asList()
你可以在这里找到文件.. http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Arrays.html
答案 2 :(得分:1)
你可以完全绕过数组(我不太明白你为什么要使用它)并创建一个从list派生的匿名类:
List<Person> persons = new ArrayList<Person>(){{
add(new Person("first", "id1"));
add(new Person("second", "id2"));
// etc..
}};
请注意,这会在静态块中使用初始化并创建内部类(如果您不期望它,可能会引起一些混淆)。请注意,内部块可以循环并添加动态数量的对象(正如您在问题编辑中所述)。
但为什么不这样做:
List<Person> persons = new ArrayList<Person>();
persons.add(new Person(...));
等?
答案 3 :(得分:1)
列表对象可以包含多种类型的对象。因此,在列表中,您可以拥有人物对象以及列表这样的人
List<Person> myList = new List<Person>();
Person p1 = new Person();
Person p2 = new Person();
myList.add(p1);
myList.add(p2);
Person p3 = new Person();
List<Object> globalList= new List<Object>();
globalList.add(myList );
globalList.add(p3);
答案 4 :(得分:1)
只是不要创建本地参考,你可以这样做:
List<Person> list = new ArrayList<Person>();
for( /* add here gardian */ ) {
list.add(new Person("first", "id1"));
}