讨论equals方法的使用

本文探讨了在Java中使用equals方法进行对象比较时的最佳实践。重点在于如何正确地调用equals方法,避免NullPointerException,并强调了逻辑清晰的重要性。
  1. 示例代码
    第一种(错误):
    TestEquals{  public Long static DEFALUT_INVARIABLE = new Long(1);   public f(){    Long result = otherMethod(...);    if(DEFALUT_INVARIABLE.equals(result)){      ...    }  }}

    第二种(正确):

    TestEquals{  public Long static DEFALUT_INVARIABLE = new Long(1);   public f(){    Long result = otherMethod(...);    if(result.equals(DEFALUT_INVARIABLE)){      ...    }  }}
  2. 讨论:
    这里的代码是想判断一个结果值是否是预期的结果,应该把被比较的值放在前面,期望值放在后面.相当于一个主动方,一个是被动方,为什么呢?理由如下.
  3. 观点:
    1. 这样更符合思维逻辑:我是想检测result是否等于DEFALUT_INVARIABLE; 而不是DEFALUT_INVARIABLE是否等于result.虽然结果一样,但这涉及到一个逻辑思维的转换.在比较复杂的if语句中,这种思维转换就会很麻烦,也只有在这种时候,才会体现出这种讲究的好处.
    2. 对于临界值null,多了一次检测的好处,若result是null,则在第一种编码中是不会报错,结果永远是false,而在第二种编码下,程序就会抛出NullPointerException. null在很多时候都是需要特殊对待的
  4. 反例:
    对于两个值都是从方法获得临时变量,就没办法上述实现观点二.但是,无论如何,在大多数情况下,都会涉及到观点一.
  5. 注意:对于方法的返回值,在正常情况下返回null值的做法,是件值得商榷的事情,需要返回null的情况是少之又少,这里就不讨论


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值