Memberクラスを拡張するMemberNio (SocketChannel およびその他の nio 固有のオブジェクトを含む) というクラスがあるとします。
メソッド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>
これにより、 Memberオブジェクトについてのみ知る必要があるMemberNioオブジェクトが必要になります。
これは、リストとインターフェイス/サップタイプを扱うときに繰り返し発生する問題です。