悩みどころ
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;
みたいなことができないんだよな。