具有多个参数的Setter

时间:2016-03-02 17:40:51

标签: java setter getter-setter

我对使用setter的正确方法感到有点困惑。

创建一个只有1个相同对象类型参数的setter的首选方法是什么?

public void setWebsite(String website) {
    if(website ==null){
        this.website = "";
    }else {
        this.website = website;

    }
}

但是我有2个安装者,我怀疑

public void setAddressClientList(List<AddressClient> addressClientList,Client client) {
    //Here we add the customer to the address

    if (!addressClientList.isEmpty()) {

        for (AddressClient addressClient : client.getAddressClientList())
        {
            addressClient.setClient(this);
            this.addressClientList.add(addressClient);
        }

    }
}

public void setProfessional(String companyName,String vatNumber ) {

    this.professional = !(companyName == null || vatNumber == null);

}

这是构造函数

public Client(Client client,Company company,Client lastInsertClient) throws ClientException {


    setCompany(company);
    setActive(true);
    setCustomField(client.customField);
    setWebsite(client.website);
    setVatNumber(client.vatNumber);
    setPhoneNumber(client.phoneNumber);
    setCurrency("notImplementedYet");
    setFaxNumber(client.faxNumber);
    setCompanyName(client.companyName);
    setSalutation(client.salutation);
    setLastName(client.lastName);
    setEmail(client.email);
    setFirstName(client.firstName);



    setClientNumber(lastInsertClient);
    setProfessional(client.companyName,client.vatNumber);
    setAddressClientList(client.addressClientList,client);


}

有人可以解释这是否是使用setter的最佳方法。如果最后2个装配工不正确你会建议什么?

1 个答案:

答案 0 :(得分:1)

也许你不应该使用setter,也许你应该这样做。 Setter主要用于设置所需的Object字段。通常你一次设置一个值(或者如果是这样的话就得到它),但是可能存在值应该成对操作的情况等。这是一个严格的语义和几乎是哲学问题,但如果你想做根据人们使用的最佳实践,我建议您将方法重命名为更具描述性的方法,以避免混淆,如果其他人使用您的代码。如果这是一个独奏项目,你也可以恰当地评论它,并以你的快乐方式。