ジェネリックスを用いたインターフェース定義

インターフェースのメソッド定義に於いて、メソッド名は統一したいが、引数の型はその時に応じたデータ型を扱いたい、という場合に、インターフェースの側では型パラメータで指定し、実装クラスの方で使用するデータ型を指定(してオーバーライド)するという使い方ができる。

この方法を用いることで、型の数だけメソッドを用意する必要がなくなり、また、型の追加が必要になったときにインターフェースを変更しないで済むようになる。

サンプルコード

 ○インターフェース

  interface MyInterface <T> { void method (T t);}

 ○実装クラス

  class Foo implements myInterface <String> {

   public void method (String s) {}

  }

  class Bar implements myInterface <Integer> {

   public void method (Integer i) {}

  }