【问题标题】:Setting object attributes via a array list通过数组列表设置对象属性
【发布时间】:2020-09-09 07:04:39
【问题描述】:

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

已经为 Car 类建立了 Getter/setter。

到目前为止,我将文件转换成一个名为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());
                    

                }

            }





【问题讨论】:

  • 您需要获取 2 个列表 1 用于汽车 1 用于自行车,然后使用 space 拆分它们,然后您可以将它们添加到您的汽车的设置器中

标签: java object arraylist setter


【解决方案1】:

据我所知,您拥有所需的一切。要使用属性填充您的 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);
}

【讨论】:

  • 完美,谢谢。只是一个简单的问题,为什么在属性数组上使用'final'?如果去掉这个访问修饰符会有什么不同?
  • Final 在程序中不会改变变量时使用。建议在声明变量时始终使用 final,因为变量是否在变化对读者来说更清楚。我想它对编译器也更好。始终尝试制作最终变量和私有字段。 IntelliJ 在这方面有很大帮助 ;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-29
  • 1970-01-01
  • 1970-01-01
  • 2013-06-06
  • 2014-02-04
  • 1970-01-01
相关资源
最近更新 更多