neal at gafter.com
Tue Mar 3 13:26:25 PST 2009
On Tue, Mar 3, 2009 at 1:18 PM, Marek Kozieł <develop4lasu at gmail.com> wrote:
> I get it now.
> Yes A is a subtype of Collection<A>
> but after
> B extends A
> B will be Collection<B> from B point of view
> B will be Collection<A> from A point of view
> In base relation is same as one created by overloaded methods.
So if we have a class C that is a sibling of B (a child of A), then
from A's point of view we can place a C into the collection (because C
is a subtype of A). But then from B's point of view the collection
should contain only Bs and not any Cs. So when B pulls something out
of the collection we could get a ClassCastException.
That's the kind of thing you need to demonstrate can't happen in order
to show this change is a sound extension of the type system.
More information about the coin-dev