Конструктор по умолчанию для класса даты с использованием API даты - PullRequest
0 голосов
/ 02 апреля 2019

Я делаю класс Date для своей школьной работы, который в основном выполняет некоторые базовые функции, такие как API Date. Ни одному из методов не разрешается связываться с классом API даты Java, кроме одного из конструкторов, которые устанавливают текущее местное время. У меня возникают проблемы при настройке с ошибкой в ​​экземпляре, который я сделал для него.

import java.util.*;
public class Date
{
    // declare needed variables
   private int day;
   private int month;
   private int year;

   /**
    * Default constructor to set the date info to the current date 
    */
   public Date()
   {
       // I have trouble assign Date using the Java API Date class
       Date d1 = new Date();
       Calendar cal = Calendar.getInstance();
       cal.setTime(d1);
       day= cal.get(Calendar.DAY_OF_MONTH);
       month = cal.get(Calendar.MONTH);
       year = cal.get(Calendar.YEAR);
    }
    /**
    * Overloaded constructor to set the date info based on user input
    * @param int inMonth to input month value
    * @param int inDay to input day value
    * @param int inYear to input year value
    *
    */
    public Date( int inMonth, int inDay, int inYear)
   {
       //set all the inputs into suitable variables
       day = inDay;
       month = inMonth;
       year = inYear;
    }
}

Ошибка: несовместимый тип: Дата не может быть преобразована в java.util.Date

Ответы [ 2 ]

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

Переименуйте ваш класс и конструкторы в «MyDate» или любое другое имя, кроме «Date».

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

java.time

    /**
     * Default constructor to set the date info to the current date 
     */
    public Date()
    {
        // The solution is to use LocalDate
        LocalDate d1 = LocalDate.now(ZoneId.systemDefault());

        // I am leaving the rest to yourself, it shouldn’t be hard
    }

Класс java.util.Date, который вы пытались использовать (я думаю), плохо разработан и давно устарел.LocalDate из java.time, современного Java-API даты и времени, с которым гораздо приятнее работать.LocalDate содержит методы, необходимые для получения года, месяца и дня месяца в виде целых чисел.

И тогда вам не нужно переименовывать собственный класс.

Разве невозможноиспользовать то же имя класса, что и класс, который я использую?

Нет, вы можете использовать класс, имя которого совпадает с именем класса, который вы объявляете.Только вы не можете импортировать этот другой класс.Вместо этого вы можете ссылаться на него по квалифицированному имени , то есть имени класса с префиксом имени пакета:

        java.util.Date d1 = new java.util.Date();

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

Ссылки

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