悩みどころ

DIな設計思想から行くと、こんな実装になることが。

public interface Hoge{
  List getList();
}

public class HogeImplA implements Hoge{
  private List<ClassA> list;
  List<ClassA> getList(){
   return list;
  }
}

public class HogeImplB implements Hoge{
  private List<ClassB> list;
  List<ClassB> getList(){
   return list;
  }
}

でも呼出元ではListをgenericsではないのでちょっと不便だったりもする。


これはインターフェースを分けるべきなのだろうか。

public interface HogeA{
  List<ClassA> getList();
}

public interface HogeB{
  List<ClassB> getList();
}

あるいは、こうか。

public interface HogeA{
  List<ClassA> getListA();
  List<ClassB> getListB();
}

悩ましいな。


もう一つ不便なのが、ClassA・ClassBの親クラスにSClassを作った時、

List<ClassA> list = new ArrayList<ClassA>();
List<SClass> sList = (List<CLassA>)list;

みたいなことができないんだよな。