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

问题描述

基本上,我正在一个项目中,某些类的属性和类的名称存储在文本文件中。这里的目标是创建文本文件(我已经做过)中列出的某种数据类型(在本例中为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);
}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...