假设我有一个名为MemberNio的类(包含一个 SocketChannel 和其他 nio 特定对象),它扩展了Member类。
getMember(id)和getMembers方法返回MemberNio对象。我的应用程序层不需要了解 Nio 的任何内容,只需调用getMember方法来获取成员并使用超类型 Member:
Member member = membersMgr.getMember(id);
但是当我尝试调用getMembers时会出现问题:
List<Member> members = membersMgr.getMembers(); // <- error, can't cast List<MemberNio> to List<Member>
这将迫使我拥有MemberNio对象,而我应该只知道Member对象。
当我使用列表和接口/支持类型时,这是一个反复出现的问题。