インタフェースとGenerics

いろんなタイプの実装を見込んでインタフェースを作ると、つい、引数や戻り値の型をObjectにしがちになる。
インタフェースでObjectにするにしても、Genericsでクライアントから型を指定できるようにしておくと結構便利。
クライアントクラスで、injection用のインスタンス変数の型にGenericsを効かせておけば、DIもできるし、コード中でダウンキャストしなくてもいいし。
別の型専用の実装をinjectしちゃうとRuntimeExceptionになりそうだけど、それは設定ミスってことで。