一段重写equals的代码,里面的equals是递归调用还是隐式参数下相应对象的方法

发布于 2021-11-09 13:16:12 字数 1372 浏览 1007 评论 3

class Employee
{
 public Employee(String n,double s,int year,int month,int day)
 {
  name = n;
  salary = s;
  GregorianCalendar calendar = new GregorianCalendar(year,month-1,day);
  hireDay = calendar.getTime();
 }
 
 public String getName()
 {
  return name;
 }
 
 public double getSalary()
 {
  return salary;
 }
 
 public Date getHireDay()
 {
  return hireDay;
 }
 
 public void raiseSalary(double byPercent)
 {
  double raise = salary*byPercent/100;
  salary += raise;
 }
 
 public /**final*/ boolean equals(Object objectOther)
 {
  if(this == objectOther)
   return true;
   
  if(objectOther == null)
   return false;
   
  if(getClass() != objectOther.getClass())
  //if(!(objectOther instanceof Employee)) 
   return false;
   
  Employee other = (Employee)objectOther;
  
  return name.equals(other.name) && salary == other.salary&&hireDay.equals(other.hireDay);
 }

/**这个equals方法后面的name.equals(other.name)中的equals方法是递归调用,还是对name这个字符串对象变量直接引用了String类的equals方法呢?*/

 public int hashCode()
 {
  return 7 * name.hashCode() + 11 * new Double(salary).hashCode() + 13 * hireDay.hashCode();
 }
 public String toString()
 {
  return getClass().getName()+"[name= "+name+"salary= "+salary+"hireDar= "+hireDay+"]";
 }
 
 private String name;
 private double salary;
 private Date hireDay;
 
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

陌上芳菲 2021-11-11 20:51:18

没错

顾挽 2021-11-10 18:46:45

好吧,我自己来结个贴,我认为是name这个String的对象变量引用了String类的equals方法,因为方法调用一般是两个参数,一个是显示参数,这里就是other.name,一个是隐式参数,隐式参数一般就似乎.号前面的那个对象引用或者类名,name是String类对象,自然它后面的方法就是String类的方法了,有高手看到的话再帮我确认一下吧吧~

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文