问题描述
基本上,我正在一个项目中,某些类的属性和类的名称存储在文本文件中。这里的目标是创建文本文件(我已经做过)中列出的某种数据类型(在本例中为Car)的对象的列表,然后将它们分配给文本文件中的数据类型。以下是我将使用的文本文件的示例:
汽车:2
4 1 1红色3 80.5 20 60 2 aadawd
1 3 2蓝色3 80 30 20 1 aaxzd
自行车:3
2 1
2 2
2 3
基本上,“汽车:2”表示我们有2辆汽车。它下面的两行指示相应汽车的属性。为了不浪费时间在不必要的信息上,我只列出Car下面各行的数据类型:
已经为汽车课程建立了字母/字母设置器。
到目前为止,我已将文件转换为一个名为list的ArrayList,其中文件的每一行代表的是数组的元素。这使我很容易创建Car类型的ArrayList。现在我需要设置汽车的属性。有什么想法吗?
for (int i = 0; i < list.size(); i++) {
if (list.get(i).contains("Red")) {
carList.add(new RedCar());
} else if (list.get(i).contains("Blue")) {
carList.add(new BlueCar());
} else if (list.get(i).contains("Yellow")) {
carList.add(new YellowCar());
}
}
解决方法
据我所知,您拥有所需的一切。要用属性填充您的清单,您必须创建一个对象并将其放在变量上,然后再将其推送到列表中。
...
if (list.get(i).contains("Red")) {
//hopefully all cars inherts from Car
Car c = new RedCar();
final String[] attributes = list.get(i).split(" ");
c.setFirstAttr(attributes[0]);
c.setSecondAttr(attributes[1]);
//and so on
carList.add(c);
}
将汽车的颜色用作属性可能是一种更好的方法。因为从这个角度看,除了颜色外,汽车看起来都是一样的。
//you dont have to decide which type if car you create
for (int i = 0; i < list.size(); i++) {
//hopefully all cars inherts from Car
Car c = new Car();
final String[] attributes = list.get(i).split(" ");
c.setFirstAttr(attributes[0]);
//and so on
c.setColor(attributes[3]);
carList.add(c);
}