1

我在跑步时得到null了价值instrumentRented

public class RentalAgreement
{
    private MusicalInstrument instrumentRented;

public RentalAgreement(Customer renter, 
    RentalDate dateRented, 
    MusicalInstrument instrumentRented){            
        customer = renter;
        rentalDate = dateRented;
        instrumentRented = instrumentRented;

如何初始化MusicalInstrument引用RentalAgreement

4

2 回答 2

0

利用this.instrumentRented = instrumentRented;

由于参数与字段属性具有相同的名称,因此您需要使用显式前缀this来指定范围。

于 2013-06-16T08:49:09.063 回答
0

您必须使用 new 运算符实例化一个类。

所以你的代码中必须做一些事情

instrumentRented = new MusicalInstrument();

您访问它之前。完成此操作后,您可以执行该类中的函数。

instrumentRented.doSomething();

在上面的代码中,您似乎在构造函数中传递了它,所以这意味着调用者必须实例化它。

但是,我建议采用命名约定,您可以在其中查看变量是类成员还是局部变量。在上面的代码中,局部变量与参数具有相同的名称,因此不会将其设置为成员变量,而是将其分配给自身。您可能会收到关于此的警告,具体取决于环境(对此不确定,但 Eclipse 肯定会发出类似这样的警告)。这称为阴影,因此您需要做的是:

this.instrumentRented = instrumentRented;
于 2013-06-16T08:49:39.893 回答