使用Date API的日期类的默认构造函数

时间:2019-04-02 05:03:51

标签: java date constructor

我正在为学校作业设置Date类,该类基本上具有一些基本功能,例如API Date。除设置为当前本地时间的构造函数之一外,其他方法均不允许与Java的API Date类关联。我在为它创建的实例上设置错误时遇到麻烦。

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 个答案:

答案 0 :(得分:1)

将您的类和构造函数重命名为“ MyDate”或日期以外的其他名称。

答案 1 :(得分:0)

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类(我认为)设计欠佳且已过时。来自Java.time(现代的Java日期和时间API)的LocalDate非常好用。 LocalDate拥有将月份的年,月和日获取为整数的方法。

然后您无需重命名自己的班级。

是否无法使用与我正在使用的班级相同的班级名称?

否,您可以使用与要声明的类同名的类。只有您不能导入该其他类。相反,您可以使用限定名称来引用它,即以包名称为前缀的类名称:

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

在这种情况下,您不想这么做,但是很高兴知道。您可能需要在其他时间再上其他课程。

链接