アノテーションによるアサーション(その12 オーバーライド時の整合性編)

概要

 バージョン 0.0.13 にて、メソッドのオーバーライドに制限を追加しました。この変更により、メソッドをオーバーライドする際に、オーバーライドする側がされる側と同様の制約アノテーションを持たない場合にはエラーになるようになりました。これはリスコフの置換原則(Liskov substitution principle)を意識したものです。継承を単なるソースコードの再利用と位置づけた場合にはこのような制約は足枷になるかもしれませんが、継承は is-a 関係になるべきだという意図を明確に打ち出すために、あえてこのような制約を強制するようにしました。*1

*1:この制約が明らかに問題になるケースがみつかったら excludes のようなオプションを追加するかもしれません。