この基本クラスがあるとしましょう:
abstract public class Base {
abstract public Map save();
abstract public void load(Map data);
}
驚いたことに、派生クラスでこれを行うことができました。
public class Derived extends Base {
@Override
public Map<String, String> save() { //Works
...
}
...
}
しかし、私はこれを行うことができませんでした:
public class Derived extends Base {
@Override
public void load(Map<String, String> data) { // Fails
...
}
...
}
ここで何が起きてるの?特殊な戻り値の型を使用できるのに、特殊なパラメーターの型を使用できないのはなぜですか?
さらにややこしいのは、 の元の宣言を保持するとload
、それをより特殊な型に割り当てることができるということです。
public class Derived extends Base {
@Override
public void load(Map data) {
Map<String, String> myData = data; // Works without further casting
...
}
...
}