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

解决方案 »

  1.   

    两个不相干的类当然不能互相转换,至少要有继承关系才行。
    防止这种问题出现的办法就是不要为自己的类取莫名其妙的名字,比如Object
      

  2.   

    你可能把instanceof的意思理解错了。它是用来在运行时指出对象是否是特定类的一个实例。它通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。   其次,Object是所有类的父类, 
        
      

  3.   


    你好!本人初学者想问一下,Object是所有类的父类,所有的类都是它的子类,不是继承关系吗?
      

  4.   

    楼主自己给自己挖了个好坑,由于楼主定义的Object覆盖了默认的Object类,所以equals方法中的Object变成了楼主自定义的了,在使用instanceof的时候就会转换失败。
      

  5.   


    你好!本人初学者想问一下,Object是所有类的父类,所有的类都是它的子类,不是继承关系吗?
    仔细看看你的代码,根本没有使用jdk的Object,而是你自己申明了一个自定义的Object类。
      

  6.   

    明白了,自己定义一个Object类!非常感谢!
      

  7.   

    obj instanceof Person,这句有问题,obj默认是你自定义的Object类型,无法转换