harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alexey Varlamov" <alexey.v.varla...@gmail.com>
Subject Re: [classlib] Sun compiler change?
Date Tue, 29 Aug 2006 09:20:03 GMT
2006/8/29, Spark Shen <smallsmallorgan@gmail.com>:
> Alexey Varlamov 写道:
> > 2006/8/29, Spark Shen <smallsmallorgan@gmail.com>:
> >> Krzysztof Sobolewski 写道:
> >> > Spark Shen wrote:
> >> >
> >> >
> >> >> Did you (refer to thread [app] ant with ecj) put
> >> >>
> >> >> Eclipse compiler JAR on Ant's
> >> >> execution classpath to execute the javac task.
> >> >>
> >> >> If so, may be that's why It always gives you "unchecked cast"
> >> warning,
> >> >> no errors.
> >> >>
> >> >
> >> > Well, I created a new EnumSet class in completly unrelated
> >> environment... So
> >> > it is perfectly possible that there's a classpath conflict
> >> somewhere. I
> >> > can't verify that because don't have the Harmony build here :)
> >> >
> >> > BTW: another experiment revealed that
> >> > EnumSet<? extends Enum<E>> set = (EnumSet<? extends
> >> Enum<E>>)collection;
> >> > compiles without warnings. No matter how much I think I understand
> >> generics,
> >> > there's always something that surprises me ;)
> >> >
> >> Conceptually speaking, I think EnumSet<? extends Enum<E>> still
has
> >> potential pitfall:
> >>
> >> In the signature of addAll(Collection<? extends E> collection) method,
?
> >> denotes subclass of E.
> >> While in EnumSet<? extends Enum<E>>, ? denotes subclass of Enum<E>.
But
> >> consider the relationship
> >> between E and Enum<E>, E is subclass of Enum<E>. So, we can not
> >> guarantee that subclass of E is definitely
> >> subclass of Enum<E>.
> >
> > Hmm, as E is a subclass of Enum<E>, subclasses of E definitely have
> > Enum<E> among ancestors ;)
> Yes, you are right. And I made a wrong judgement here. :-P
>
> The actual statement I want to judge is that:
> E is subclass of Enum<E>. So, we can not guarantee that subclasses of
> E(? extends E) is definitely
> compatible with subclasses of Enum<E>(? extends Enum<E>).
>
> Since the input collection is of type <? extends E>, cast it to <?
> extends Enum<E>> seems suspicious.

Nothing suspicious actually - the cast just lifts upper bound up.
Taking into account cyclic declaration of E, the bound in fact remains
the same. So I believe this is correct way in this particular case.
--
Alexey

---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
For additional commands, e-mail: harmony-dev-help@incubator.apache.org


Mime
View raw message