Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #11706 > unrolled thread

Converting Sets

Started byRoedy Green <see_website@mindprod.com.invalid>
First post2012-02-01 23:34 -0800
Last post2012-02-03 14:25 -0800
Articles 1 on this page of 21 — 7 participants

Back to article view | Back to comp.lang.java.programmer


Contents

  Converting Sets Roedy Green <see_website@mindprod.com.invalid> - 2012-02-01 23:34 -0800
    Re: Converting Sets Mayeul <mayeul.marguet@free.fr> - 2012-02-02 12:47 +0100
      Re: Converting Sets Roedy Green <see_website@mindprod.com.invalid> - 2012-02-02 05:32 -0800
        Re: Converting Sets Mayeul <mayeul.marguet@free.fr> - 2012-02-02 16:06 +0100
          Re: Converting Sets markspace <-@.> - 2012-02-02 09:21 -0800
            Re: Converting Sets Jim Janney <jjanney@shell.xmission.com> - 2012-02-02 13:13 -0700
              Re: Converting Sets markspace <-@.> - 2012-02-02 13:46 -0800
            Re: Converting Sets Roedy Green <see_website@mindprod.com.invalid> - 2012-02-02 16:29 -0800
              Re: Converting Sets Daniel Pitts <newsgroup.nospam@virtualinfinity.net> - 2012-02-02 17:34 -0800
                Re: Converting Sets Arne Vajhøj <arne@vajhoej.dk> - 2012-02-04 20:49 -0500
                  Re: Converting Sets Daniel Pitts <newsgroup.nospam@virtualinfinity.net> - 2012-02-06 12:55 -0800
                    Re: Converting Sets Arne Vajhøj <arne@vajhoej.dk> - 2012-02-06 20:47 -0500
                      Re: Converting Sets Daniel Pitts <newsgroup.nospam@virtualinfinity.net> - 2012-02-06 17:51 -0800
                        Re: Converting Sets Arne Vajhøj <arne@vajhoej.dk> - 2012-02-06 20:57 -0500
              Re: Converting Sets markspace <-@.> - 2012-02-03 14:12 -0800
                Re: Converting Sets Lew <lewbloch@gmail.com> - 2012-02-03 22:32 -0800
              Re: Converting Sets Lew <lewbloch@gmail.com> - 2012-02-03 22:30 -0800
            Re: Converting Sets Lew <lewbloch@gmail.com> - 2012-02-03 22:33 -0800
        Re: Converting Sets Daniel Pitts <newsgroup.nospam@virtualinfinity.net> - 2012-02-02 11:02 -0800
      Re: Converting Sets Roedy Green <see_website@mindprod.com.invalid> - 2012-02-02 18:25 -0800
        Re: Converting Sets markspace <-@.> - 2012-02-03 14:25 -0800

Page 2 of 2 — ← Prev page 1 [2]


#11726

Frommarkspace <-@.>
Date2012-02-03 14:25 -0800
Message-ID<jghmtg$o0o$1@dont-email.me>
In reply to#11720
On 2/2/2012 6:25 PM, Roedy Green wrote:

> thanks. I have written an SSCCE to explain this in tedious detail.
> See http://mindprod.com/jgloss/generics.html#CONVERTINGSETS


 From your example,

   static void showDogs2( Set<? extends Dog> dogs )

Is the correct solution.  This is exactly what wildcards were designed 
for.  You should learn the acronym that Joshua Bloch invented as a 
mnemonic:  PECS - Producer Extends, Consumer Super.

In this case, showDogs2 is a producer in the sense that within the 
method body, the variable "dogs" produces dogs for output, but the 
method body doesn't put any dogs into the set, or modify the set in anyway.

This

Set<? extends Dog> someDogs2 = someDalmatians;

Is wrong, in the sense that it's too hamstrung to be useful.  As your 
comments indicate, it's hard to work with, and doesn't really do what 
you want either.  As a corollary, this

   static Set<? super Dog> makeSomeDogs() {...

would be broken for the same reason.  You almost never want to return a 
type with a wildcard.  Just give the user an single type, it will do 
what you wanted much better than the wildcard version.

   static Set<Dog> makeSomeDogs() {...

Finally, where do you use the super wild card then?  Something like this:

  static void copy(Set<? extends Dog> from, Set<? super Dog> to) {...

[toc] | [prev] | [standalone]


Page 2 of 2 — ← Prev page 1 [2]

Back to top | Article view | comp.lang.java.programmer


csiph-web