在 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
。这是什么原因?