说我有两节课:
public class Customer {
private String name;
private Car car;
public Customer() {}
public Customer(String name, Car car) {
this.name = name;
this.car = car;
}
public void setName(String name) {this.name = name;}
public String getName() {return this.name;}
public Car getCar() {return this.car;}
}
和
public class Car {
private String brand;
public Car() {}
public Car(String brand) {
this.brand = brand;
}
public void setBrand(String brand) {this.brand = brand;}
public String getBrand() {return this.brand;}
}
从Martin Konecny在this post中的回答中,我了解到,为了访问Car
中Customer
的 getters ,我会这样做:
Customer c = new Customer("Lefrost", "BMW");
String brand = c.getCar().getBrand();
但是我应该如何从Car
访问Customer
的设置者?
我尝试了以下有效的方法:
// adding setter for 'car' in Customer class
public void setCar(Car car) {this.car = car;}
,然后像这样更改Car
的数据字段内容:
c.setCar(new Car("Honda"));
但这需要我创建一个新的Car
对象,并且实际上并没有使用Car
类中的设置器。
我究竟如何从Car
访问Customer
的二传手?
如果没有好的方法,是否有更好的方法可以将Car
的{{1}}的数据字段内容更改为?
答案 0 :(得分:3)
只需调用getCar
,然后在返回的对象上调用setBrand
方法:
c.getCar().setBrand("Honda");
由Car
返回的getCar()
将是Car
内存储的Customer
,因此,没有什么阻止您直接在返回的对象上直接设置品牌的。
如果Car
是不可变的,那么您的尝试:
c.setCar(new Car("Honda"));
是实现这一目标的唯一方法。
答案 1 :(得分:0)
如果品牌字段不是最终字段,则可以执行c.getCar().setBrand("Honda")
答案 2 :(得分:0)
您需要获取Car Object,然后在其中设置属性:
c.setCar(new Car());
c.getCar().setBrand("Honda");