对于这个具有误导性的标题感到抱歉,但我真的不知道如何解释我的问题。
假设我有两个分支,第一个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
我的榜样是否足够清楚?
谢谢!
答案 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);