tem*_*mpy 5 java overriding overloading equals
为什么在Java中使用默认的Objectequals方法并将其修改为更适合特定的类(通过instanceof使用类型转换进行验证):
public boolean equals(Object otherObject)
{
boolean isEqual = false;
if ((otherObject != null) && (otherObject instanceof myClass))
{
myClass classObject = (myClass)otherObject;
if (.....) //checking if equal
{
.....
}
Run Code Online (Sandbox Code Playgroud)
而不是使用equals特定于每个需要使用的类的新方法重载它equals:
public boolean equals(myClass classObject)
Run Code Online (Sandbox Code Playgroud)
签名Object.equals()是public boolean equals(Object).如果您定义了一个方法public boolean equals(MyClass),那么您将添加一个具有不同签名的新方法,而不是覆盖(或重新定义,如果您愿意)该Object.equals()方法.
由于所有集合都调用该Object.equals()方法,因此除了您自己的代码之外,任何人都不会调用您的新方法,因此几乎无用.例如,如果您创建了一个Set<MyClass>,它会认为两个实例是不同的,尽管您的equals(MyClass)方法认为它们是相同的.
| 归档时间: |
|
| 查看次数: |
470 次 |
| 最近记录: |