关于重写equals方法 本帖最后由 shirui8653719 于 2013-08-11 15:35:27 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1,不调super()是可以的,这本来就是一个隐式的调用,你不自己写 java也会帮你调一次父类的构造函数。2,instanceof 是判断是否包含 ** 对象的,User o = (User) obj; 这句话是多态的体现,向下类型转换 可以判断obj 是不是User的实例,是就把obj转型成User类型,返回他的id 可以 因为上面有个无参的构造方法;那是用instanceof判断有obj你要传入的对象是否是User类的类型的后面的是强制类型的转换 因为你要当前类下的属性什么的 if(obj instanceof User) {==> if(obj.getClass() == User.class) { if( obj instanceof User )==> if( obj != null && User.class.isInstance(obj) ) 1,一切类都是Object的子类,这里不写super()是可以的,但是也不写他也是存在的2,在重写equals的时候,要比较就应该确定是否属于同一类型的事物,所以要用到instanceof来判断下 isInstance 方法和 instanceof 等价。非空判断在equals方法开头就做过了。 isInstance 方法和 instanceof 等价。非空判断在equals方法开头就做过了。额,我可能误解了你那个 ==> 的意思…… 就是说比如我有个SpecialUser类继承自User类那么我有个此类的对象su1,其su1.id=123并且我有个User类的对象u1,其u1.id=123它们是否equals呢?我首先应该判断su1是否是User类的,因为SpecialUser是User子类,所以为true然后将su1转型成为User型,判断他们的id是否相等 u1.equals(su1) 和 su1.equasls(u1) 能同时为true 或 false吗? 不用equals也是可以的 public boolean equals(Object obj) { if(obj!=null){ if(obj instanceof User){ User 0=(User) obj ; if(this.id=o.id&&this.email equalse(o.email)&&this.pwd){ retrn true ; } } } return false ; }第二行先是判断obj是不是为空(不存在),如果是直接返回false第三行判断obj是不是一种类型的如果是就把他强制转化成User类型 if(this.id=o.id&&this.email equalse(o.email)&&this.pwd) 判断类里面的属性是不是相等注意if的作用域 u1.equals(su1) 和 su1.equasls(u1) 能同时为true 或 false吗?只要子类在继承时没有覆盖equals()方法,这样的判断绝对是互等的前面我不是讲了u1.equals(su1)的情形么?而su1.equasls(u1)的情形就更简单了,u1当然也是User类的,把它cast成User类等于什么也没有做然后,判断su1.id=u1.id,结论还是一样的 初次接触类和方法的编程,请教一个计算的问题 快速排序 出现地址越界异常 源代码如下: 请高手帮我修改下 宠物猫 域名注册和虚拟机代理 Java数据结构和算法(第二版) Menubar上的menuitem被图像遮挡怎么办? 大家帮忙分析一下,这是什么错误。 RE:int[][]有clone()方法吗? JAVA 中的向量主要用途在哪里 安装VisualAge for Java 出错(很急呀!!!) 单态模式和 单例模式 有什么共同点,和区别。 新手求助,Java中关于readline用法的问题
判断obj 是不是User的实例,是就把obj转型成User类型,返回他的id
那是用instanceof判断有obj你要传入的对象是否是User类的类型的
后面的是强制类型的转换 因为你要当前类下的属性什么的
if(obj.getClass() == User.class) {
if( obj instanceof User )==>
if( obj != null && User.class.isInstance(obj) )
2,在重写equals的时候,要比较就应该确定是否属于同一类型的事物,所以要用到instanceof来判断下
isInstance 方法和 instanceof 等价。
非空判断在equals方法开头就做过了。
isInstance 方法和 instanceof 等价。
非空判断在equals方法开头就做过了。额,我可能误解了你那个 ==> 的意思……
那么我有个此类的对象su1,其su1.id=123
并且我有个User类的对象u1,其u1.id=123
它们是否equals呢?
我首先应该判断su1是否是User类的,因为SpecialUser是User子类,所以为true
然后将su1转型成为User型,判断他们的id是否相等
if(obj!=null){
if(obj instanceof User){
User 0=(User) obj ;
if(this.id=o.id&&this.email equalse(o.email)&&this.pwd){
retrn true ;
}
}
}
return false ;
}第二行先是判断obj是不是为空(不存在),如果是直接返回false
第三行判断obj是不是一种类型的如果是就把他强制转化成User类型
if(this.id=o.id&&this.email equalse(o.email)&&this.pwd) 判断类里面的属性是不是相等
注意if的作用域
只要子类在继承时没有覆盖equals()方法,这样的判断绝对是互等的
前面我不是讲了u1.equals(su1)的情形么?
而su1.equasls(u1)的情形就更简单了,u1当然也是User类的,把它cast成User类等于什么也没有做
然后,判断su1.id=u1.id,结论还是一样的