Java 访问对象中对象的设置器

Java 访问对象中对象的设置器,java,class,object,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.

假设我有两门课:

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;}
}


从Martin Konecny在中的回答中,我了解到,为了从
客户
访问
汽车
getters,我会这样做:

Customer c = new Customer("Lefrost", "BMW");
String brand = c.getCar().getBrand();

但是我应该如何从
客户
访问
汽车
设置程序

我尝试了以下方法,效果很好:

// adding setter for 'car' in Customer class
public void setCar(Car car) {this.car = car;}
然后将
Car
的数据字段内容更改如下:

c.setCar(new Car("Honda"));
但是这需要我创建一个新的
Car
对象,它实际上并没有在
Car
类中使用setter


我如何从
客户
访问
汽车
的设定器?


如果没有好方法,是否有更好的方法从
Customer
更改
Car
的数据字段内容?
只需调用
getCar
,然后在返回的对象上调用
setBrand
方法:

c.getCar().setBrand("Honda");
getCar()
返回的
Car
将是存储在
Customer
中的
Car
,因此没有什么能阻止您直接在返回的对象上设置品牌

如果
汽车
是不可变的,那么您的尝试:

c.setCar(new Car("Honda"));

是实现这一点的唯一方法。

只需调用
getCar
,然后在返回的对象上调用
setBrand
方法:

c.getCar().setBrand("Honda");
getCar()
返回的
Car
将是存储在
Customer
中的
Car
,因此没有什么能阻止您直接在返回的对象上设置品牌

如果
汽车
是不可变的,那么您的尝试:

c.setCar(new Car("Honda"));

是实现这一点的唯一方法。

如果brand字段不是final,您可以执行
c.getCar().setBrand(“本田”)
如果brand字段不是final,您可以执行
c.getCar().setBrand(“本田”)
您需要获取Car对象,然后在其中设置属性:

c.setCar(new Car());
c.getCar().setBrand("Honda");

您需要获取汽车对象,然后在其中设置属性:

c.setCar(new Car());
c.getCar().setBrand("Honda");