为兼容类型是什么情况? 找不出来问题在哪

lgfggh 2017-06-07 08:09:53
class Person						
{
private int age;
Person(int age)
{
this.age=age;
}
public boolean equals(Object obj) //重写equals函数
{
if(!(obj instanceof Person))
throw new ClassCastException("转型异常");
Person p=(Person)obj;
return this.age==p.age;
}
}
class Demo {} //定义一个Demo类
class Object
{
public static void main(String []args)
{
Person p1=new Person(20);
Person p2=new Person(20);
Person p3=p1;
Demo d=new Demo();
System.out.println(p1.equals(p2));
System.out.println(p1.equals(d));
}


}



...全文
249 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
爱睡觉的阿狸 2017-06-15
  • 打赏
  • 举报
回复
obj instanceof Person,这句有问题,obj默认是你自定义的Object类型,无法转换
qidao12 2017-06-15
  • 打赏
  • 举报
回复
明白了,自己定义一个Object类!非常感谢!
zs808 2017-06-15
  • 打赏
  • 举报
回复
引用 1 楼 HinanaiTenshi 的回复:
两个不相干的类当然不能互相转换,至少要有继承关系才行。 防止这种问题出现的办法就是不要为自己的类取莫名其妙的名字,比如Object
解决了问题并且还找到出现问题的根源,提出了好的建议,赞个!
HinanaiTenshi 2017-06-14
  • 打赏
  • 举报
回复
引用 5 楼 qidao12 的回复:
[quote=引用 1 楼 HinanaiTenshi 的回复:] 两个不相干的类当然不能互相转换,至少要有继承关系才行。 防止这种问题出现的办法就是不要为自己的类取莫名其妙的名字,比如Object
你好!本人初学者想问一下,Object是所有类的父类,所有的类都是它的子类,不是继承关系吗?[/quote] 仔细看看你的代码,根本没有使用jdk的Object,而是你自己申明了一个自定义的Object类。
galiniur0u 2017-06-14
  • 打赏
  • 举报
回复
楼主自己给自己挖了个好坑,由于楼主定义的Object覆盖了默认的Object类,所以equals方法中的Object变成了楼主自定义的了,在使用instanceof的时候就会转换失败。
qidao12 2017-06-14
  • 打赏
  • 举报
回复
引用 1 楼 HinanaiTenshi 的回复:
两个不相干的类当然不能互相转换,至少要有继承关系才行。 防止这种问题出现的办法就是不要为自己的类取莫名其妙的名字,比如Object
你好!本人初学者想问一下,Object是所有类的父类,所有的类都是它的子类,不是继承关系吗?
Gere Yeung 2017-06-14
  • 打赏
  • 举报
回复
好典型的案列,而且初学时不宜排除。
PrettyTutu 2017-06-07
  • 打赏
  • 举报
回复
你可能把instanceof的意思理解错了。它是用来在运行时指出对象是否是特定类的一个实例。它通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。 其次,Object是所有类的父类,
110成成 2017-06-07
  • 打赏
  • 举报
回复
楼上正解。
HinanaiTenshi 2017-06-07
  • 打赏
  • 举报
回复
两个不相干的类当然不能互相转换,至少要有继承关系才行。 防止这种问题出现的办法就是不要为自己的类取莫名其妙的名字,比如Object

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧