关于一个“变态”面试题的疑问
有一个流传的变态级的JAVA程序员面试32问,我见过几次。
其中有一个问题是这样的:
两个对象值相同(x.equals(y)==true),但却可有不同的hashcode,这句话对不对?
我以为这句话是对的;但是,看到几处给出的答案都是:
不对,有相同的hashcode.
难道我理解错了题目的意思。
我是这样想的:
自定义的一个类可以重载equals和hashCode方法,我可以在equals方法里任何情况都返回true,但hashCode里用当前时间的毫秒数作为返回值:这样,很明显的,对大多数的对象x.equals(y)==true但x.hashCode() != y.hashCode().
当然,这样的重载是很有问题很不符合设计思想也没有什么实际用处的。但题目说的只是可能,难道不是么?