zoukankan      html  css  js  c++  java
  • instanceof和getClass()的区别 CVT

      1. class A { }  
      2.   
      3. class B extends A { }  
      4.   
      5. Object o1 = new A();  
      6. Object o2 = new B();  
      7.   
      8. o1 instanceof A => true  
      9. o1 instanceof B => false  
      10. o2 instanceof A => true // <================ HERE  
      11. o2 instanceof B => true  
      12.   
      13. o1.getClass().equals(A.class) => true  
      14. o1.getClass().equals(B.class) => false  
      15. o2.getClass().equals(A.class) => false // <===============HERE  
      16. o2.getClass().equals(B.class) => true 

    getClass() will be useful when you want to make sure your instance is NOT a subclass of the class you are comparing with.

    一个非常完美的equals方法的写法:

       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);
       }

  • 相关阅读:
    MD5加密 + 盐
    SQLite数据库--C#访问加密的SQLite数据库
    SQLite问题笔记
    微信开发--Two.菜单生成
    NOIP2018游记(更新完毕)
    HNOI2019 游记
    JXOI2017-2018 解题报告
    网络流20+4题解题报告(已更前20题)
    CodeForces528A (STLset)
    CodeForces 140C New Year Snowmen(堆)
  • 原文地址:https://www.cnblogs.com/openfire/p/3030750.html
Copyright © 2011-2022 走看看