黑马程序员技术交流社区

标题: hashtable中的重写equals中的一个问题 [打印本页]

作者: 李贺晓    时间: 2012-10-25 09:49
标题: hashtable中的重写equals中的一个问题
class A
{
        public A(int count)
        {
                this.count=count;
        }
        public boolean equals(Object obj)
        {
                if(obj=this)
                {
                        return ture;
                }
                if(obj!=null && obj.getClass()==A.class )
                {
                        A a=(A) obj;
                        if(this.count=a.count)
                        {
                                return ture;
                        }
                }
                return false;
        }
        public int hashCode()
        {
                return this.count;
        }
}
此方法中重写了equals方法,在equals方法中obj.getClass()==A.class是起什么 作用的,效果是什么?
作者: 陈琦    时间: 2012-10-25 09:53
感觉就是 obj instance A
作者: 李贺晓    时间: 2012-10-25 10:02
陈琦 发表于 2012-10-25 09:53
感觉就是 obj instance A

应该不是吧,如果是这个样子的话,obj instance A这个永远都是真的啊,obj是Object类型的,它是最顶级的啊
作者: 李靖    时间: 2012-10-25 10:17
每个类都有一个自己的唯一的字节码文件,其实就是判断obj对象和A对象是否是同一个对象。而obj instanceof A是说obj是否为A的一个实例,如果obj为A的子类,同样返回true,但是字节码就不一样了。
作者: 陈琦    时间: 2012-10-25 10:29
李贺晓 发表于 2012-10-25 10:02
应该不是吧,如果是这个样子的话,obj instance A这个永远都是真的啊,obj是Object类型的,它是最顶级的 ...

嗯嗯 学习了
作者: ssx0101    时间: 2012-10-25 10:51
obj.getClass()==A.class是判断是不是同类;
this.count==a.count(原码漏了一个“=”)是判断是不是同值。
只有既同类又同值才能判定“equals”为真。
作者: 李贺晓    时间: 2012-10-25 11:19
曹自祥 发表于 2012-10-25 10:51
obj.getClass()==A.class是判断是不是同类;
this.count==a.count(原码漏了一个“=”)是判断是不是同值。 ...

这里说的同类就是说你输入的对象也是是属于就相当于A a =new A()吧?
作者: up_    时间: 2012-10-25 12:37
obj.getClass()==A.class
getClass方法返回的是该类的运行时类,也就是类加载进内存所产生的字节码文件,不管通过该类new出多少对象,字节码文件是一致的,class返回的也是字节码文件,所以判定的是obj对象和A对象是否为同一个字节码文件所产生的对象。
另外同学
  public A(int count)
        {
                this.count=count;
        }
你这样写是有问题的,要把count定义在外面。
作者: 高正新    时间: 2012-10-25 16:03
本帖最后由 水木桶 于 2012-10-25 16:05 编辑

判断传进来的对象obj是否和A是一个类。。
应该可以用 obj instanceof A 来代替。

A a=(A) obj;
这句就是典型的向下转型了。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2