我什至不知道要问什么,但是我已经被困了几个小时了。我试图在bookFlight类中创建一个仅包含人或ArrayList(“伪装为客户端”)的对象(NodeReservation)。但是,此对象(NodeReservation)是使用空的ArrayList创建的。为什么会发生这种情况?
这是课程bookFlight的重要部分:
void bookFlight(ArrayList<Persone> group) {
NodeReservation newReservation = new NodeReservation(new Group(group));
}
班组如下:
public class Group extends Client{
ArrayList<Persone> group;
public Group(ArrayList<Persone> group) {
this.group = new ArrayList<Persone>();
}
}
Client只是一个空类,因此我可以将其用于Person类(也扩展到Client),但两种类型的对象均以同一哈希表结尾。
NodeReservation类:
public class NodeReservation {
NodeReservation next;
Client client;
public NodeReservation(Client client) {
this.client = client;
next = null;
}
}
答案 0 :(得分:2)
public Group(ArrayList<Persone> group) { this.group = new ArrayList<Persone>(); }
此代码完全忽略group
参数。如果要复制它,则必须将其传递给ArrayList
构造函数:
this.group = new ArrayList<>(group);
此后,group
字段将是与ArrayList
参数不同的group
对象,但其中包含相同元素的顺序相同。从一个元素添加或删除元素不会影响另一个。
答案 1 :(得分:2)
Group
的构造函数忽略传递给它的列表,仅创建一个空列表。您应该将参数传递给ArrayList
构造函数,而不要忽略它:
public Group(ArrayList<Persone> group) {
this.group = new ArrayList<Persone>(group);
// Here ----------------------------^
}