编译器错误与 class 构造函数参数不匹配

Compiler error doesn't match up with class constructor parameters

我有四个 classes:ParkedCar、ParkingMeter、ParkingTicket 和 PoliceOfficer。 PoliceOfficer class 应该 "issue a ticket",即创建一个新的 ParkingTicket 对象,如果汽车停放的时间超过应有的时间。 ParkingTicket 对象具有作为成员对象的 ParkedCar 对象和 PoliceOfficer 对象(基本上是包含有关哪辆车获得罚单的信息以及开票人员的信息的对象)。下面是我的停​​车票 class 的构造函数,我正在尝试使用第一个来创建我的停车票。

来自停车票 class:

public ParkingTicket(ParkedCar parkedCarObj, PoliceOfficer officerObj){
    this.car = new ParkedCar(parkedCarObj);
    this.officer = new PoliceOfficer(officerObj);
}

//Copy constructor, makes new instance a copy of object passed as argument
public ParkingTicket(ParkingTicket obj2){
    this.car = new ParkedCar(obj2.car);
    this.officer = new PoliceOfficer(obj2.officer);
}

我在 PoliceOfficer class 中开罚单的方法如下。如果我需要开票,我会尝试将 ParkedObject 和自己的 PoliceOfficer 对象(通过使用 this)传递给 ParkingTicket 构造函数,如下所示。
来自警察 class:

public boolean issueTicket(ParkedCar car, ParkingMeter meter){
        boolean expired = false;

        if (car.getMinsParked() > meter.getMinsPurchased()){
            expired = true;
            ParkingTicket ticket = new ParkingTicket(car, this); //Compiler error
        }

        return expired;
    }

但是,我实例化新的 ParkingTicket 的那一行引发了编译器错误。消息是:

constructor ParkingTicket in class ParkingTicket cannot be applied to given types;

required: ParkedCar

found: ParkedCar,PoliceOfficer

reason: actual and formal argument lists differ in length

我很困惑,因为它应该调用第一个重载的构造函数,它以 ParkedCar 和 PoliceOfficer 作为参数。我不确定为什么它说它应该只接受 ParkedCar 的一个参数。如果我只将 ParkedCar 对象作为参数传递,它编译得很好,但我知道这是不正确的,因为我没有将所需的 PoliceOfficer 信息传递给 ParkingTicket 对象。

有什么想法吗?感谢任何帮助。

我会把答案放在这里,因为我显然在评论中回答了它。

错误消息说它只需要一个 ParkedCar 参数。您显示的单参数构造函数具有不同的类型,因此这不是重载问题。

由于预期参数是您预期的部分列表,因此它可能是一个陈旧的 .class 文件。重新编译 类 它应该可以工作。