Как правильно записать вызов и анализировать значения в метод-установщик, который принимает входную переменную типа Calendar.Builder - PullRequest
0 голосов
/ 18 октября 2019

Невозможно правильно обновить поле даты, используя экземпляр класса для вызова метода установки (setSchoolStartDate ()). Классная работа требует, чтобы SchoolStartDate и SchoolEndDate должны были иметь тип Builder. Вопрос: Можно ли достичь нижеследующего?

    public static void main(String[] args) {
    School obj1 = new School();
    obj1.setSchoolStartDate(SchoolStartDate);

полный код ниже:

    import java.util.Calendar.Builder;
    import java.util.List;

    public class School {
    private String SchoolName;
    Builder SchoolStartDate;
    Builder SchoolEndDate;
    private List<Frequency> SchoolFrequency;

   //Getters and setter methods for the variables
    public void setSchoolName(String SchoolName) {
    this.SchoolName = SchoolName;
    }

    public String getSchoolName() {
    return SchoolName;
    }

     public void setSchoolStartDate(Builder SchoolStartDate) {
    this.SchoolStartDate = SchoolStartDate;
    }

public Builder getSchoolStartDate() {
    return SchoolStartDate;
}

public void setSchoolEndDate(Builder SchoolEndDate) {
    this.SchoolEndDate = SchoolEndDate;
}

public Builder getSchoolEndDate() {
    return SchoolEndDate;
}

public void setSchoolFrequency(List<Frequency> SchoolFrequency) {
    this.SchoolFrequency = SchoolFrequency;
}

public List<Frequency> getSchoolFrequency() {
    return SchoolFrequency;
}
// @overloaded constructor 1- parameterized

/**
 * @param SchoolName
 * @param SchoolStartDate
 * @param SchoolEndDate
 * @param SchoolFrequency
 */
public School(String SchoolName, Builder SchoolStartDate, Builder SchoolEndDate,
        List<Frequency> SchoolFrequency) {
    this.SchoolName = SchoolName;
    this.SchoolStartDate = SchoolStartDate;
    this.SchoolEndDate = SchoolEndDate;
    this.SchoolFrequency = SchoolFrequency;
}

// @overloaded constructor 2- default
public School() {

}

1 Ответ

0 голосов
/ 21 октября 2019

Либо ваш учитель неправильно понял, либо вы неправильно поняли работу в классе. Не имеет смысла представлять даты как Calendar.Builder. Кроме того, класс Calendar плохо спроектирован и давно устарел, поэтому мы не должны его использовать, не говоря уже о его обучении, в том числе не использовать вложенный класс Calendar.Builder.

java.time

Вместо этого используйте LocalDate из java.time для представления даты. Это не проблема. Например (не проверено):

public class School {
    // More instance variables here
    LocalDate startDate;

    public void setStartDate(LocalDate startDate) {
        this.startDate 0 startDate;
    }

    public LocalDate getStatrtDate() {
        return startDate;
    }

    // more methods
}

Используйте, например, вот так:

    School obj1 = new School();
    obj1.setStartDate(LocalDate.of(2019, Month.SEPTEMBER, 1));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...