栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

重写equals()方法时的注意点[java]

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

重写equals()方法时的注意点[java]

重写equals(Object o)方法时的注意点
  1. 重写equals方法的时候要注意一定要将我们的参数对象一定要考虑为空的情况

    • 这里如果我们没有将我们的参数对象为空的情况排除在外,那么这个时候我们就可能会去用这个空的对象去调用一个数据进行比较,这个时候就会出现空指针异常

    eg:

    package 面向对象练习;
    
    

import java.util.Objects;

public class Cat {
private String name;
private int age;
public Cat(){

   }
   public Cat(String name,int age ){
       this.name=name;
       this.age=age;
   }
   
   @Override
   public boolean equals(Object o) {
       if (this == o) return true;
       if (getClass() != o.getClass()) return false;
       
       Cat cat = (Cat) o;
       return age == cat.age &&
               Objects.equals(name, cat.name);
   }

}
class Test{
public static void main(String[] args) {
Cat cat = new Cat(“小橘”,3);
cat.equals(null);
}
}

   



2. 重写equals()方法一定要考虑参数对象类型和我们的本类(也就是调用类)不一致的情况

   * 如果不一致就要排除,如果参数对象和我们的本类的类型都不一致,那么我们的向下转型时就会出现一个类型转换异常(ClassCastException)

   eg:

   ```java
   package equals方法;
   
   import java.util.Objects;
   
   public class Cat2 {
       private String name;
       private int age;
   
       public Cat2() {
   
       }
   
       public Cat2(String name, int age) {
           this.name = name;
           this.age = age;
       }
   
       @Override
       public boolean equals(Object o) {
           if (this == o) return true;
           if (o==null) return false;
           
           Cat2 cat = (Cat2) o;
           return age == cat.age &&
                   Objects.equals(name, cat.name);
   
       }
   }
   class Test2{
       public static void main(String[] args) {
           Cat2 cat = new Cat2("小橘",3);
           cat.equals(null);
       } 
   }
  1. 最后就是我们重写equals()方法的时候一定要先从特殊情况出发,先排除特殊情况,这样可以提高程序的执行效率
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/632211.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号