一段重写equals的代码,里面的equals是递归调用还是隐式参数下相应对象的方法
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
没错
OK~
好吧,我自己来结个贴,我认为是name这个String的对象变量引用了String类的equals方法,因为方法调用一般是两个参数,一个是显示参数,这里就是other.name,一个是隐式参数,隐式参数一般就似乎.号前面的那个对象引用或者类名,name是String类对象,自然它后面的方法就是String类的方法了,有高手看到的话再帮我确认一下吧吧~