A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ~(@^_^@)~ 初级黑马   /  2013-4-18 09:54  /  1337 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public boolean equals(Object obj){
           if(this==obj)
         return true;
         if(obj instanceof Person){
          Person p =(Person)obj;
          return this.age > p.age;
          }
          return false;
        }

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

8 个回复

倒序浏览
怎么问个这么神奇的问题。
if(obj instanceof Person){
           Person p =(Person)obj;
    ...
}
这里判断如果obj是Person对象的话  就强制转换。
没搞懂到底楼主到底要表达什么意思。
回复 使用道具 举报
楼主的这段代码是要判断Person类中年龄的大小的,
  if(this==obj)
         return true;
这个是一个健壮性判断,当传入的是本类对象返回true;
if(obj instanceof Person){
          Person p =(Person)obj;//这里就是楼主所说的强转,你如果没有强转Person p=obj;编译器报错,因为JVM无法识别obj是否为person类,所以需要强转;
          return this.age > p.age;
          }

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
不理解楼主的意思。。。
回复 使用道具 举报
//equals方法的重写
public boolean equals(Object obj){
           if(this==obj)//判断对象与本对象是否是同一个对象
         return true;
         if(obj instanceof Person){//判断对象是否是与Person类相同的类或其子类
          Person p =(Person)obj;//运行到这里代表obj是person类或其子类 可以强制转换为Person类型对象
          return this.age > p.age;//通过比较对象年龄属性来判断某一实例是否是该对类的实例
          }
          return false;
        }

以上完毕
回复 使用道具 举报
本帖最后由 姓名长度不符 于 2013-4-18 13:10 编辑

这其实是对象转型问题,而且是向下转型,就以这个列子,向下转型编译运行都不会报错
毕竟,Preson继承自Object
这里要用到向下转型的原因是要调用参数的age,Object不一定会有,只有Person和其子类才会有,所以不转型的话会报错
但是向下转型一般不用,所以通常用泛型或者加判断语句来避免类型转换
如果是想了解它底层到底是如何实现的,我认为参考多态就是了,多态是父类应用指向子类对象,这里反过来
回复 使用道具 举报
public boolean equals(Object obj){
           if(this==obj)
         return true;
         if(obj instanceof Person){//所有对象都有一个共同的父类就是Object
          Person p =(Person)obj;//向下转型,把Object类型转成你需要的类型,这里LZ指定的是Person类型,
          return this.age > p.age;
          }
          return false;
        }
回复 使用道具 举报
不好意思啊,各位,没让你们明白咋回事...
当时忘记那个转型叫啥了,就是向下转型.....
谢谢各位的答复!!
回复 使用道具 举报
  他是的意思是: 判断传入的对象是不是类,是就返回true , 然后判断传入的类是不是Person的子类  是就判断传入类的属性age是否小于调用本方法类的age    不过我想说一下 你这么写,应该就是个病 。 如果符合第一个If了   那么接下来的条件都不会判断了。  
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马