通过数组列表设置对象属性

Setting object attributes via a array list

基本上我正在做一个项目,其中 class 的某些 class 属性和名称存储在一个文本文件中。此处的目标是创建文本文件(我已经完成)中列出的特定数据类型(在本例中为 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


基本上,'Car: 2'表示我们有2辆车。它下面的两行表示各自汽车的属性。为了不在不必要的信息上浪费时间,我只列出 Car 下方各行的数据类型:

Getters/setters 已经为汽车 class 建立。

至此,我将文件转换成一个名为list的ArrayList,其中文件的每一行代表的是数组的一个元素。这使我可以很容易地创建 Car 类型的 ArrayList。我现在需要做的就是设置 Car 的属性。有什么想法吗?

            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());
                    

                }

            }





据我所知,您拥有所需的一切。要用属性填充您的 carlist,您必须创建一个对象并将其放在一个变量上,然后再将其推送到列表。

...
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);
}