访问类列表中的方法

时间:2017-05-29 18:07:34

标签: java class arraylist

对于这个具有误导性的标题感到抱歉,但我真的不知道如何解释我的问题。

假设我有两个分支,第一个Car (在示例中没有获取和设置)

public class Car{
    int id;
    string model;
    ArrayList<Specs> ListSpecs = new ArrayList<Specs>();
}

第二个,规格,包含汽车的更多细节:

public class Specs{
    float kilometers;
    float passangers;
    public float km_pass(float a, float b){
            return this.a/this.b;
       }
}

现在我的主要问题是,如何从对象类型Car访问变量km_pass?试过像

这样的东西
Example  Car = new Car();
Car.setId(123);
Car.setModel("Abc");
ListDetails Specs = new Specs();
Car.SetSpecs(ListDetails);

Car.SetSpecs.SetKilometers(123); //wont work

我的榜样是否足够清楚?

谢谢!

1 个答案:

答案 0 :(得分:1)

你在这里处理一个列表,重要的是要注意该列表与其中包含的列表完全不同。

我认为您将列表视为菜单的(打印)页面,如果您要更改项目,则必须更改整个页面,这是不正确的。如果要更改其中的对象,则不要将列表视为文件柜,不要更改整个文件柜,只需更改抽屉内的项目。

这如何适用于您的情况: 列表,应该是内阁。

规格,应该是抽屉内的物品(列表的每个位置都是抽屉)

如果你的setSpecs方法如下所示:

void setSpecs (List<Spec> specs) {
    this.listSpecs = specs;
}

这意味着每次调用setSpecs时,您实际上都在更换整个机柜。

您可能希望添加规范,它看起来像这样:

void addSpec (Spec spec) {
    this.listSpecs.add(spec);
}

从列表中获取规范将如下所示:

// think of index as the number of the drawer where the spec is stored.
Spec getSpec (int index) {
    // actually gets the spec from the list
    return this.listSpecs.get(index)
}

和示例:

// Create a new car
Car car = new Car();
// Configures the car
car.setId(123);
car.setModel("Abc");
// Create a new spec
Spec spec = new Spec();
// Configures the spec
spec.setKilometers(123);
// Adds spec to the car's list
car.addSpec(spec);
// gets the first spec of the list
Spec firstSpec = car.getSpec(0);