public boolean equals(Object otherObject)
{
// a quick test to see if the objects are identical
if (this == otherObject) return true;
// must return false if the explicit parameter is null
if (otherObject == null) return false;
// if the classes don't match, they can't be equal
if (getClass() != otherObject.getClass()) return false;
// now we know otherObject is a non-null Employee
Employee other = (Employee) otherObject;
// test whether the fields have identical values
return name.equals(other.name) && salary == other.salary && hireDay.equals(other.hireDay);
}
为了防备name和hireDay可能为null的情况,需要使用Objects.equals方法.如果两个参数是null,Objects.equals(a,b)调用将返回ture; 如果其中一个参数为null, 则返回false;否则,如果两个参数都不为null,则调用a.equals(b).
对上述程序,有以下问题:
1. 以我目前对于方法和类的理解, public boolean equals(Object otherObject),返回的是一个布尔类型的,括号里面是声明一个otherObject, 这个Objects.equals(a,b)是哪儿来的, 不符合 public boolean equals(Object otherObject) 类型.
手机回复。
如果你用eclipse的话,可以按住ctrl,点击equals方法名,可以看到源码。
关于equals其实就是对比两个对象是否一致,Object里面只是一个基础实现,其子类可以对其进行重写。
对于==和equals的区别,简单解释就是==比较地址,equals比较地址中的内容。
(1)Objects.equals(a,b),,,首先,不知道你这个方法哪里来的,,,肯定不是官方给出的吧,
equals 比较两个 对象的关系,,,连个对象,,,,Objects.equals(a,b)这个方法,,,三个对象
(2)其次Object不可能是大写吧,Object中木有这个静态方法,,,而且每个对象都有,equals(O),这个方法,不需要借助其他进行对比。
Objects是 package java.util; 这个包下的类,,他有个静态方法如下,,跟你的描述完全一致(jdk1.8亲测)
public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
}
如果对你有帮助,,,,请采纳!!,,,纯手码
可以,我去源码里面看一下
首先,Java规范对equals和hashCode两个方法做了限制的,所以不建议字节重新类的equals方法,都是使用Eclipse自动生成的equals方法,以保证遵从Java的约定。
其次,要理解equals的业务含义,就是不仅仅是相同对象,还包括在业务属性上的相等都可以归为相等,例如Employee,按照id相同的记录,就视为是两个相同对象,而不管他们是不是相同的引用地址。
最后,建议也不用太纠结equals的方法的,从你贴出的代码,也好理解相同的含义就是相通引用、相同类型、而且某些属性的值相同就视为相等。因为不需要我们自己去写equals方法的,因为自己写还无法保证符合Java的规范约定。编辑器有自动生成equals方法的算法的。