Невозможно преобразовать строку в класс ошибки построителя при реализации шаблона построителя - PullRequest
0 голосов
/ 18 апреля 2019

Невозможно преобразовать строку в класс ошибки построителя при реализации шаблона построителя. Пожалуйста, дайте мне знать, что я делаю неправильно и где. Спасибо.

пакет BuilderDesignPattern;

открытый класс Сотрудник {

private final int id;
private String Name;
private String Address;

private Employee(EmployeeBuilder empB){

// Получение ошибки при этом несоответствии типов строк не может преобразовать строку в Employee.EmployeeBuilder.

    this.id = empB.getId();
    this.Name = empB.getName();
    this.Address = empB.getAddress();

}

public static class EmployeeBuilder{

    private int id;
    private String Name;
    private String Address;
    public EmployeeBuilder setId(int id) {
        this.id = id;
        return this;
    }
    public EmployeeBuilder setName(String name) {
        Name = name;
        return this;
    }
    public EmployeeBuilder setAddress(String address) {
        Address = address;
        return this;
    }
    public EmployeeBuilder getId() {
        return this;
    }
    public EmployeeBuilder getName() {
        return this;
    }
    public EmployeeBuilder getAddress() {
        return this;
    }

    public Employee build(){

        return new Employee(this);
    }

}

}

Ответы [ 2 ]

1 голос
/ 18 апреля 2019

Ваши получатели ошибочны и не возвращают правильные поля.Должно быть так:

public int getId() {
    return this.Id;
}
public String getName() {
    return this.Name;
}
public String getAddress() {
    return this.Address;
}

PS: в Java существует соглашение именовать поля строчными буквами.

PS2: это не первоклассный компоновщик, как построенный класс "знает "о строителе.

0 голосов
/ 18 апреля 2019

Ваши геттеры не должны возвращать this.

Должно возвращать атрибуты.

public class EmployeeBuilder{

    private int id;
    private String Name;
    private String Address;

    public EmployeeBuilder setId(int id) {
        this.id = id;
        return this;
    }

    public EmployeeBuilder setName(String name) {
        Name = name;
        return this;
    }

    public EmployeeBuilder setAddress(String address) {
        Address = address;
        return this;
    }

    public EmployeeBuilder getId() {
        return id;
    }

    public EmployeeBuilder getName() {
        return Name;
    }

    public EmployeeBuilder getAddress() {
        return Address;
    }

    public Employee build(){
        return new Employee(this);
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...