我有两个类(class)Student和ClassRoom,每个类(class)都有一个ArrayList。我正在尝试将学生对象从学生 ArrayList 移动到 ClassRoom ArrayList,但它不起作用。
ClassRoom类(class)代码:
public class ClassRoom{
private String id;
private String name;
private int age;
ArrayList< ClassRoom >classRoom;
public ClassRoom(String id, String name, int age){
this.id = id;
this.name = name;
this.age = age;
}
public ClassRoom() {
classRoom = new ArrayList();
id = " ";
name = " ";
age = 0;
}
public void Add(String id,String name,int age){
ClassRoom c = new ClassRoom(id, name, age);
classRoom.add(c);
}
学生类(class)代码:
public class Student{
private String id;
private String name;
private int age;
private ClassRoom classroom;
ArrayList< Student >students;
public Student(String id, String name, int age){
this.id = id;
this.name = name;
this.age = age;
}
public Student() {
students = new ArrayList();
id = " ";
name = " ";
age = 0;
}
public void Add(String id,String name,int age){
Student s = new Student(id, name, age);
students.add(s);
}
public void MoveToClassRoom(String id, String name, int age){
for(int i=0; i< students.size();i++){
if (students.get(i).getId().equals(id)){
classroom.Add(students.get(i).getId(), students.get(i).getName(), students.get(i).getAge());
students.remove(i);
}
}
}
最佳答案
Students
不是Classroom
的种类。因为您使用了几个 ArrayList
两者都是特定的,几乎没有互换性。这样做的原因是因为驻留在 List
中的每个对象沿线的某个地方必须共享与 List
匹配的相同继承链的类型。
在 Java 中,您创建的每个类都隐式继承自类型 Object
。这就是toString()
的地方和hashCode()
方法来自,例如。所以如果你想输入 Student
和Classroom
在同一个列表中,您可以将它们放在 List
中类型 <Object>
...但是您无法用它做任何太有趣的事情。然而,它会强调一点,即您能够与该列表中的元素执行交互类型,这些元素足够通用以支持所有包含的元素;即您可以调用 Object
List
中任何元素上的方法.
所以,如果您想用其内容做一些更特定于应用程序的事情,也许您会对稍微不同的设计模式感兴趣。如果你想在同一个对象中放置多种类型的对象List
,必须有某种你想要的共享功能;在某些情况下,处理 Student
似乎是合乎逻辑的就像 Classroom
一样。如果您想这样做,您可以同时拥有 Student
和Classroom
extend
一个class
类型 SchoolEntity
,其中包含 Student
的方法和属性和Classroom
元素将需要。然后你可以创建一个 List
类型 <SchoolEntity>
,容纳两种甚至更多。
为了获得更大的灵 active ,您可以定义一个接口(interface) ISchoolEntity
,两者 Student
和Classroom
可以实现并使用 List<ISchoolEntity>
反而。之所以更灵活是因为Java不支持多个inheritance
;这意味着一旦 Classroom
和Student
extend
SchoolEntity
,以后他们就不可能 extend
另一个类如 CollegeEntity
。相反,Java允许一个类实现多种接口(interface),因此Student
和Classroom
可能被视为两种 ISchoolEntity
和ICollegeEntity
,如果应用程序稍后需要它。
关于java - 如何将 ArrayList 中的对象添加到另一个类中的另一个 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28788939/