访问对象内的对象的设置器

时间:2018-07-16 11:33:20

标签: java class object

说我有两节课:

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中的回答中,我了解到,为了访问CarCustomer 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}}的数据字段内容更改为?

3 个答案:

答案 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");