在 Java 8 中创建默认方法时,某些Object方法不能从默认方法中调用。例如:
interface I {
default void m() {
this.toString(); // works.
this.clone(); // compile-time error, "The method clone() is undefined for the type I"
this.finalize(); // same error as above.
}
}
似乎clone()并且finalize()是唯一Object不允许的方法。巧合的是,这些是唯一Object受保护的方法,但这个问题特别与默认方法有关,因为它们将被扩展的类继承java.lang.Object。这是什么原因?