Java:在clone()方法中进行转换

Luc*_*che 0 java

上周在我们的java课程中,我们介绍了Object类及其一些方法,其中一个方法是clone(),当我们的老师向我们解释这个方法时,我们被告知每次我们克隆一个对象时,我们都必须向下-通过clone()转换返回的对象,因为clone()返回一个Object类型的对象。

因此,我找不到为什么此方法更愿意返回通用对象,因为它可以使用 getClass() 等其他方法轻松获取克隆对象的类型并自动处理向下转换。

哦,顺便说一句,这不是作业,只是我个人的好奇心促使我问这个问题(我的老师可以给我一个准确的答案,所以我决定暂时让他这样做:D)

flu*_*ffy 5

这是因为clone() 的java.lang.Object 基类签名返回Object。您可以重写子类方法的返回类型,但这并不是真正必要的。由于您已经知道要克隆的类,因此您可以简单地将其转换为您要克隆的类,一切都会好起来的。

重读您的问题,我注意到您问为什么它不只是获取克隆对象的类型并自动处理向下转换。在内部,它已经在这样做了;它实际上更多的clone()是返回一个已向上转换为的特定对象Object,所有 Java 对象都继承自该对象。但是,编译器不会更改您为其分配clone()返回值的变量的类型。

既然你已经知道你想要进入的班级,那么你没有任何理由不能自己进行投射。