东方热线,有效Java代码的十条规则:覆盖等于时,请遵循一般惯例-ope电竞投注-ope电竞app下载-ope电竞

好莱坞在线 156℃ 0

1、解说

咱们知道,Object类供给了equal还珠格格1s办法:

public boolean equals(Object obj) {
return (thissurburb == obj);
}

完成了目标地址的比较。也便是判别是否指向了Psiphon同一目标。下东方热线,有用Java代码的十条规矩:掩盖等于时,请遵从一般常规-ope电竞投注-ope电竞app下载-ope电竞列情况下,咱们需求掩盖equal团缚s办法:

  • 当需求判别是否逻辑持平,且超类还没有掩盖equals

这一般归于“值类”(value class)的景象。值清蒸桂鱼的做法类仅仅是一个表明值的类,例如Integer或许String 。程序员在运用equals办法来比较值目标的引证时,期望知道它们在逻辑上是否持平,而不是想了解它们是否指向同一个目标。String和八大根本类型的封装类都现已掩盖了equals办法。

在掩盖equals 办法的时分,必需要恪守它的通用约好:

  • 自反性(reflexive):关于任何非null的引证值x,x.equals(x)有必要回来true
  • 对称性(symmetr咲诗织ic):关于任何非null的引证值x小学英语和y,当且仅当y.equals(x)回来true时,x.equals(y)有必要回来true
  • 传递性(transitive):关于任何非null的引证值x、y和z,假如x.equals(y)为true,而且y.equals(z)也回来true艾玛沃森,那么x.equals(z)也有必要回来true
  • 一致性(consistent):关于任何非null的引证值x和y,只需equals的比较操作在目标中所益阳用的信息没有被修正,屡次调用x.equals(y)就会一致地回来true,或许一东方热线,有用Java代码的十条规矩:掩盖等于时,请遵从一般常规-ope电竞投注-ope电竞app下载-ope电竞致地回来false
  • 非空性东方热线,有用Java代码的十条规矩:掩盖等于时,请遵从一般常规-ope电竞投注-ope电竞app下载-ope电竞(Non-nullity):关于任何非null的引证值, x.equals(null)有必要回来false

2、完成高质量equals的办法

  • 运用==操作符查看"参数是否为这个目标的引证"
  • 运用instanceof操作符查看"参数是否为正确的类型"
  • 关于类中的要害特点,查看参数传入目标的特点是否与之相匹配
  • 编写完equals办法后,问自己它是否满意对称性、传递性、一致性
  • 重写equals时总是要重写hashCode
  • 不要将equals办法参数中的Object目标替换为其他的类水星路由器设置型,在重写时不不老仙妈要遗忘@Override注解

3、最佳记住实践

在实践作业中,掩盖equals办法比较费事,一般咱们运用IDE东西自带的生成equals功用:

 东方热线,有用Java代码的十条规矩:掩盖等于时,请遵从一般常规-ope电竞投注-ope电竞app下载-ope电竞private String loginId;
private String password;
private String name;

例如有以上特点的value obje清晨三点ct,运用东西生成的代码如下:

 @Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
通讯录return false;
if (getClass() != obj.getClass())
return false;
ExampleBean other = (ExampleBean) obj;
if (loginId == null) {
if (other.loginId != null)
return false;
} else if (!loginId.equa梦见前男友l东方热线,有用Java代码的十条规矩:掩盖等于时,请遵从一般常规-ope电竞投注-ope电竞app下载-ope电竞s(other.loginId))
return false;
i东方热线,有用Java代码的十条规矩:掩盖等于时,请遵从一般常规-ope电竞投注-ope电竞app下载-ope电竞f (name == null) {
if (other.name != 古德里安null)
return false;
} else if (!name.equals(other.name))
return fa京张高铁lse;
if (password == null) {
if (other.password != null)
return false;
} else if (!passw东方热线,有用Java代码的十条规矩:掩盖等于时,请遵从一般常规-ope电竞投注-ope电竞app下载-ope电竞ord.equals(other.password))
return fal22680日元se;
return true;
}

专业从事软件研制作业多年,在软件设计、开发、测验、研制办理等范畴里经验丰富,感兴趣的朋友能够重视我的头条号,信任一定会高压锅怎样用有所收成。

假如有软件研制方面的问题,能够咨询我。

谢谢!

标签: gary柳相旭