以下の 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$
うまくいかない理由と、それを修正する方法を教えてください。