Does someone understand why this works this way? This seems so odd. I know there are quirks to the generics syntax, but this in an edge I haven't run into yet. I haven't been able to make this one click in my head yet.
This compiles fine: public synchronized void putAll(Map<? extends K,? extends V> map) { for (Map.Entry<? extends K,? extends V> entry : map.entrySet()) { ... } } This won't compile at all: public synchronized void putAll(Map<? extends K,? extends V> map) { Set<Map.Entry<? extends K, ? extends V>> entries = map.entrySet(); ... } The error is: Type mismatch: cannot convert from Set<Map.Entry<capture-of ? extends K,capture-of ? extends V>> to Set<Map.Entry<? extends K,? extends V>> The suggested quick fix in Eclipse is "Set<?> entries = ...". This reports a warning: public synchronized void putAll(Map<? extends K,? extends V> map) { Map<K,V> map2 = (Map<K,V>)map; } The warning is: Type safety: The cast from Map<capture-of ? extends K,capture-of ? extends V> to Map<K,V> is actually checking against the erased type Map The suggested quick fix in Eclipse is to the annotation: @SuppressWarnings("unchecked"). -Nathan > -----Original Message----- > From: Tim Ellison [mailto:[EMAIL PROTECTED] > Sent: Wednesday, May 10, 2006 6:59 AM > To: harmony-dev@incubator.apache.org > Subject: Thanks Stepan! (was: Re: [jira] Resolved: (HARMONY-454) > [classlib][luni] java.util.Set generics uplift and related changes) > > Stepan Mishura (JIRA) wrote: > <snip> > > 2) To avoid casting while-loop was replaced with for-loop. Could you > review the change? > > I was scratching my head about this cast, so I was very pleased to see > your elegant solution. > > I must admit that I don't really understand why the for-loop version is > inherently different (other than it 'hides' the casting) -- but I've > learned a new pattern there :-) > > Regards, > Tim > > -- > > Tim Ellison ([EMAIL PROTECTED]) > IBM Java technology centre, UK. > > > --------------------------------------------------------------------- > Terms of use : http://incubator.apache.org/harmony/mailing.html > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- Terms of use : http://incubator.apache.org/harmony/mailing.html To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]