我有一个汽车课:
public class Car {
public String name = null; // Name of the Car Model
public String color = null; // Color of the car
Car(){
/** DO WHATEVER***/
}
}
然后在main()类中我这样做:
LinkedList<Car> myCars = new LinkedList<Car>();
myCars.add(new Car());
myCars.add(new Car());
myCars.add(new Car());
myCars.get(0).name = "Geep";
myCars.get(0).color = "Black";
myCars.get(1).name = "Camry";
myCars.get(1).color = "Red";
myCars.get(2).name = "Honda";
myCars.get(2).color = "Green";
我的问题:
Lets assume that at the time of Car object creations, we do not have values of these instance variables and we get them at a later stage, so that constructor initialization is not feasible.
那么这是正确的方法吗?我的意思是如何在Java集合中为每个对象的实例变量赋值。我的意思是,使用get()方法?我明白,如果我们有很多车 然后我们将使用for循环。
请解释。
谢谢。
答案 0 :(得分:4)
从/** DO WHATEVER***/
类似于:
Car(String name, String color){
this.name = name;
this.color = color;
}
以及稍后插入列表:
myCars.add(new Car("Geep", "Black"));
myCars.add(new Car("Camry", "red"));
...
如果您没有汽车的“详细信息”,并且您只需要实例化包含50辆汽车的列表,稍后再添加“详细信息” - 另一个问题就是:细节来自哪里?如果你事先不知道它必须来自一个永恒的来源(用户输入,文件等),那么在列表中循环运行并添加细节是有意义的:
for (Car car : myCars) {
String name = ... // get the details of the car from an external source
String type = ... // get the details of the car from an external source
car.setName(name); // of course you'll have to implement setName() and setType()
car.setType(type); // which is a better practice than exposing the class members via public access
}
答案 1 :(得分:0)
关于这是否是正确的方法:我更喜欢覆盖构造函数,以便我的初始化和setter代码在同一个地方。
基本上,我会为Car提供构造函数:
public class Car {
public String name = null; // Name of the Car Model
public String color = null; // Color of the car
public Car(String name, String color){
super();
this.name = name;
this.color = color;
}
}
然后我会把它放在我的收藏中:
LinkedList<Car> myCars = new LinkedList<Car>();
myCars.add(new Car("Jeep", "Black"));
myCars.add(new Car("Ferrari", "Red"));
答案 2 :(得分:0)
首先,不建议公开实例变量(public)。将公开更改为私有并创建getter。此外,您可以创建一个在参数中使用名称和颜色的构造函数:
public class Car {
private String name = null;
private String color = null;
public Car(String name, String color) {
this.name = name;
this.color = color;
}
public String getName() {
return name;
}
public String getColor() {
return color;
}
}
然后你可以这样做:
LinkedList<Car> myCars = new LinkedList<Car>();
myCars.add(new Car("Jeep", "Black"));
myCars.add(new Car("Camry", "Red"));
myCars.add(new Car("Honda", "Green"));
有很多方法可以做到,但我肯定会在将车辆信息添加到列表之前设置它。