Java8重写equals的疑惑
在重写Object类的equals方法时,需要强转的原因:
代码中的equals方法重写了Object类的equals方法,其形参为Object类型。Object类型为Java中所有类型的超类,因此任何类型的对象都可以传入equals方法。
然而,在重写后的equals方法中,需要比较两个Phone对象的name和price属性。Object类型没有getName()和getPrice()方法,因此不能直接比较。
立即学习“Java免费学习笔记(深入)”;
为了解决这个问题,需要将传入的Object类型的对象强转为Phone类型。这可以确保编译器知道传入的对象具有getName()和getPrice()方法。
在equals方法的第一行,打印出的obj结果为”Phone@1b6d3586″。这表明传入的对象确实是一个Phone类型的实例。但是,强转仍然是必要的,因为编译器只知道它是Object类型,而我们需要使用它作为Phone类型来比较属性。