鉴于这些 Java 类定义:
class Base {
int value;
public <T extends Base> T self() {
return (T) this;
}
}
class Derived extends Base {}
这个 Java 代码编译得很好:
new Derived().self();
但是这个 Scala 代码无法运行:
(new Derived).self(); // runtime error
运行时间错误:
java.lang.ClassCastException: Derived cannot be cast to scala.runtime.Nothing$
为什么它不起作用,以及如何解决它?