我看书上重写equals()方法,其中有一句“obj.getClass==Person.Class”,Person是自定义类,不是说java中不能直接用“==”来比较两个类而只能比较两个对象么?我把这个语句用在主方法里,就会出现编译错误提示不可比较,看到这里十分费解,请各位不吝赐教

解决方案 »

  1.   

    但是可以运行,写在main方法里就会有编译错误,不解
      

  2.   

    只是为了判断传进来的obj是不是person类型的,是的话才能在下边进行强制类型转换
      

  3.   

    instance of 就行
      

  4.   

    一个包下的类是唯一的,初始化之后类在内存的地址也是唯一的。也就是XXX.class是唯一的。equals的时候传进来的是实例对象,那么他的class是唯一的一个。所以通过==可以判断是否是同一个类。
      

  5.   

    同楼上,Xxx.class和xxx.getClass()都相当于取Xxx这个类型对应的Class类实例,而Class类对每个类型的实例都是唯一的,所以==和equals结果是相同的