【问题标题】:Java - Referencing an objects data within its own class?Java - 在自己的类中引用对象数据?
【发布时间】:2014-04-28 00:48:57
【问题描述】:

我对我的项目有疑问:

我有四个类文件,一个存储有关汽车特性和停放多长时间的信息,另一个存储有关他们从停车计时器购买了多少时间的数据,第三个是官员类,这取决于如果他们已经超过了他们购买的时间,要么返回 null,要么通过使用第四类创建一个停车票对象。

我的问题是生成 ParkingTicket 对象的方法是在官员类中,停车票对象必须采用 3 个参数:汽车对象、他们购买时间过去的分钟数和官员对象。但我不确定如何在其自己的类中引用官员对象......我知道解决方案可能是微不足道的,但我似乎被难住了。

我按照指示创建了军官的副本对象,但我不知道如何在军官类中引用它。 (我当时有点傻,试图用复制构造函数的参数作为停车罚单对象的参数……)

有人能指出我正确的方向吗?我将在下面发布我的军官等级代码和错误消息。感谢您的所有帮助!

// This class holds information about the Police Officer
public class PoliceOfficer {


   private String name;                   // Officer's name
   private String badgeNumber;            // Officer's badge #
   private int minutes;


   // Initialize PoliceOfficer object
   public PoliceOfficer(String offName, String badgeNum)
   {
      name = offName;
      badgeNumber = badgeNum;
   }


   // Create Officer copy object
   public PoliceOfficer(PoliceOfficer officer)
   {
      name = officer.name;
      badgeNumber = officer.badgeNumber;
   }

   // Set Officer name and badge number fields
   public void setOfficer(String pName, String pNumber)
   {
      name = pName;
      badgeNumber = pNumber;
   }


   // Method that executes Officer's car inspection vs. Parking meter time -
   //  returns null if time parked is less than minutes on the meter
   public ParkingTicket patrol(ParkedCar car, ParkingMeter meter)
   {
      if (car.getMinutes() > meter.getMinutesPurchased())
      {
         minutes = car.getMinutes() - meter.getMinutesPurchased();
         ParkingTicket ticket = new ParkingTicket(car, officer, minutes);
         return ticket;
      }
      else
         return null;
   }



   // Generate toString method for officer's info to be displayed on the ticket
   public String toString()
   {
      return "Name: " + name +
             "\nBadge Number: " + badgeNumber;
   }


}



PoliceOfficer.java:46: error: cannot find symbol
         ParkingTicket ticket = new ParkingTicket(car, officer, minutes);
                                                       ^
  symbol:   variable officer
  location: class PoliceOfficer
5 errors

 ----jGRASP wedge2: exit code for process is 1.
 ----jGRASP: operation complete.

【问题讨论】:

    标签: java class object reference


    【解决方案1】:

    只需使用this 代表您所在对象的当前 PoliceOfficer。例如:

    // substitute *this* for the officer parameter
    ParkingTicket ticket = new ParkingTicket(car, this, minutes); 
    

    请注意,this 指的是您所在类的当前对象。请注意,如果您在内部类中并尝试引用外部类的对象,则需要指定哪个 @987654324 @你的意思是预先挂起类名。例如,如果您在 PoliceOfficer 类的内部类中并希望引用当前警官,则可以使用 PoliceOfficer.this

    【讨论】:

    • 哇,真的就这么多吗?太棒了...对不起,这么简单的问题,我以前从未真正使用过 this,我对 java 还有些陌生。非常感谢您的帮助,完美运行!
    • @Alzecha:不客气。请注意编辑以回答。它不适用于您当前的代码,但无疑将适用于未来的一些代码。
    • 啊,好吧,这很有道理。我很好奇 this 是如何工作的,但还没有研究它,这似乎非常有用。再次感谢,这很有帮助!
    猜你喜欢
    • 2018-10-19
    • 1970-01-01
    • 2016-02-16
    • 1970-01-01
    • 2016-06-03
    • 2017-09-15
    • 1970-01-01
    • 2011-06-27
    • 1970-01-01
    相关资源
    最近更新 更多