比方說,我有一個名爲MemberNio(含的SocketChannel和其他NIO特定對象)類延伸會員類。Java的面向對象設計:接口和列表
方法getMember(ID)和getMembers返回MemberNio對象。 不需要了解的東西仁王的東西我的應用程序層可能只是調用getMember方法獲取的成員,並使用超會員:
Member member = membersMgr.getMember(id);
但是當我嘗試出現問題調用getMembers:
List<Member> members = membersMgr.getMembers(); // <- error, can't cast List<MemberNio> to List<Member>
這將迫使我有MemberNio對象,我應該只知道會員對象。
當我使用Lists和Interfaces/suptypes時,這是一個反覆出現的問題。
那麼,爲什麼你不從你的方法返回'成員'的列表? – Tudor
一些類需要MemberNio對象,否則我只會使用Members。 我仍然可以創建方法getMembersNio和另一個方法getMembers,但它對我來說似乎是錯誤的。 – Matthew