You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建默认继承构造器报错:子类构造器中new Date()标红求助

问题描述

我正在编写一个继承自Person基类的Employee对象类,尝试使用this()实现无参默认构造器,但在创建默认Date对象时,代码new Date()一直标红(已尝试在Date构造器中传入其类的实例变量),代码如下:

public class Employee extends Person
{
    private Date hireDate;

    public Employee()
    {
        this("No name", new Date() ); //THIS IS RED
    }
}
原因及解决办法

原因1:Date类导入错误或未导入

Java有两个常用Date类:

  • java.util.Date:支持无参构造,可直接new Date()实例化
  • java.sql.Date:没有无参构造,必须传入long类型时间戳

若导入java.sql.Date或未导入Date类,编译器会因无法识别合法构造器标红。

解决办法:

  • 若用JDK自带日期类,在代码顶部添加:import java.util.Date;
  • 若需用java.sql.Date,改为传入时间戳:new Date(System.currentTimeMillis())

原因2:Employee类缺少对应带参构造器

this("No name", new Date())是调用Employee自身接收String和Date的构造器,若未定义该构造,编译器会报错,连带new Date()标红。

解决办法:

在Employee类中补充对应构造器,示例:

public class Employee extends Person
{
    private Date hireDate;

    public Employee()
    {
        this("No name", new Date());
    }

    // 新增带参构造器
    public Employee(String name, Date hireDate) {
        super(name); // 需确保Person类有接收String的构造器
        this.hireDate = hireDate;
    }
}

原因3:自定义Date类构造器不符合要求

若你自定义了Date类而非使用JDK自带的,需检查:

  • 类中是否存在无参构造器
  • 构造器访问修饰符是否为public(确保Employee可访问)

解决办法:

调整自定义Date类的构造器,示例:

public class Date {
    // 确保存在可访问的无参构造器
    public Date() {
        // 自定义构造逻辑
    }
}

内容的提问来源于stack exchange,提问作者Daniel Rojas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 11:05:32