Hello! 欢迎来到小浪资源网!


Java8中重写equals方法,为什么需要强制类型转换?


Java8中重写equals方法,为什么需要强制类型转换?

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类型来比较属性。

相关阅读