有人可以帮我理解Java在做什么吗?我已经创建了一个名为data的ObservableList。我在列表中添加了元素,如下所示:
data.add(new ClientList(LastName, FirstName, Street, City, State, Zip, Telephone, DateOfBirth);
所以我创建了一个表单,用于将人员添加到此列表中,该列表保存在Java的内存中,以便稍后单击按钮添加,让我们说5个人到我的数据库。我的第一个问题是,我是否正确地将其描述为5个对象的列表,每个对象包含8个值?如果没有,那么使用Java术语描述在这里做了什么的正确方法是什么?
现在,鉴于我将上面的ObservableList称为数据,如果我输入命令
System.out.println(data.toString())
(假设我的列表中有5个客户端)我会得到一个在屏幕上引用的5个对象的列表(虽然只是指向内存中“槽”的指针),对吗?到目前为止,我真的希望人们要么说我是对的,要么告诉我我的术语都是错的,应该[在这里插入正确的术语]。或者,如果我只是偏离基地,请纠正它。
现在我不明白的是,如果我写下面的代码:
for (Object o : data) {
[variable] = data.get(0);
}
整数(0)似乎是指索引为0的列表中的对象(这将是列表中第一个人的所有值,对吧?)。 NetBeans希望我为这个变量设置一个“Object”类型,我放在那里的任何其他东西都会给我一个编译错误或运行时错误,这取决于我如何编写语句。
但是因为我在列表上进行迭代,我认为这个整数应该指向for循环当前正在处理的对象中的第一个值(在我的情况下,LastName)。从我可以推断出我的代码如何运行,我是不正确的,前一段是正在发生的事情。那么,我如何读取列表中每个对象的值?
答案 0 :(得分:0)
好的,让我回答一下,因为我做了搞清楚了。我可能错了,但我仍然想把它放在这里,所以我在以后继续学习时会得到这些信息,所以如果遇到同样的问题,其他人也可能会有这些信息。
首先,我似乎是正确的,“data.get(0)”是列表中的第一个对象,该对象是LastName,FirstName等数组。我应该没有使用data.get(int [object]),而是o。[variable] .get()。通过这种方式,迭代器已经让我成为众多对象中的一个,每个对象都包含许多变量。但是数据模型为每个变量定义了getter,因此调用[object]。[variable] .get()运行getter,从而返回该对象中变量的正确值和类型。
所以...我的迭代器的正确代码是:
for (Object o : data) { //"For each object we'll call 'o' in the already defined list named 'data' ..."
String lastName = o.lastName.get();
// repeat this pattern for each variable in the object
// [Type] [variable] = [object].[variable].get();
}
在数据模型中定义了一个getter:
public SimpleStringProperty lastNameProperty() {
return lastName;
}
(除了:使用SimpleStringProperty并将“Property”附加到变量“lastName”以使getter的名称更容易为TableView的列创建CellValueFactory)