Prev: JNI win32 and Layered windows.
Next: Design Question
From: Mike Schilling on 15 Mar 2010 17:04 Lew wrote: > You can then use 'import static' or the FQN Careful, Lew, kids read this group.
From: Kevin McMurtrie on 16 Mar 2010 01:10 In article <Xns9D3C9E062BEC0noofflinecontactplea(a)202.177.16.121>, Rhino <no.offline.contact.please(a)example.com> wrote: > Is it possible to do a full-on assignment of specific values to a HashMap > in an interface? If so, how? > > I'd like to create a HashMap that has a key that is a String and a value > that is a Color. The HashMap would contain a substantial number of these > entries. > > I'm trying to figure out how to write the initialization but am confusing > myself with respect to brackets, braces, commas, etc. > > Defining it as an Object[][] is easy enough: > > public static final Object[][] EIGHT_BIT_COLORS = { > {"Black", new Color(0,0,0)}, > {"Obscure Gray", new Color(51, 51, 51)}, > {"Dark Gray", new Color(102, 102, 102)}, > {"Light Gray", new Color(153, 153, 153)}, > {"Pale Gray", new Color(204, 204, 204)}, > {"White", new Color(255, 255,255)} > }; > > How could I write the definition if I want the Object[][] to be a HashMap > <String, Color>? > > I'm guessing that defining the Map/HashMap explicitly like this isn't > possible and that I have to initialize it with code like this: > > Map<Color, String> colorsToNamesMap = new HashMap<Color, > String>(); > > for (int ix=0; ix<EIGHT_BIT_COLORS.length; ix++) { > colorsToNamesMap.put((Color)EIGHT_BIT_COLORS[ix][1], > (String)EIGHT_BIT_COLORS[ix][0]); > } > > which means I can't define the Map in an interface because this sort of > code can't appear in an Interface, only a Class. > > Am I right about that? > > -- > Rhino > > --- news://freenews.netfront.net/ - complaints: news(a)netfront.net --- Don't forget about the constructor for anonymous classes. import java.awt.Color; import java.util.Collections; import java.util.HashMap; import java.util.Map; public interface FooColor { public static final Map<String, Color> EIGHT_BIT_COLORS = Collections.unmodifiableMap(new HashMap<String, Color>() { { put("Black", new Color(0, 0, 0)); put("Obscure Gray", new Color(51, 51, 51)); put("Dark Gray", new Color(102, 102, 102)); put("Light Gray", new Color(153, 153, 153)); put("Pale Gray", new Color(204, 204, 204)); put("White", new Color(255, 255, 255)); } }); } -- I won't see Google Groups replies because I must filter them as spam
From: Ian Smith on 16 Mar 2010 04:23 Isn't this sort of thing that Enums and EnumMaps are meant for? Just asking . . . Ian.
From: Roedy Green on 16 Mar 2010 04:35 On Mon, 15 Mar 2010 20:32:04 +0000 (UTC), Rhino <no.offline.contact.please(a)example.com> wrote, quoted or indirectly quoted someone who said : > >How could I write the definition if I want the Object[][] to be a HashMap ><String, Color>? All HashMap has is putAll and put. putAll wants a Map, which puts you back to where you started. put wants pairs. So just use static init code with a loop to feed the HashMap pairs that you specified in an array or with inline code to put. -- Roedy Green Canadian Mind Products http://mindprod.com Responsible Development is the style of development I aspire to now. It can be summarized by answering the question, �How would I develop if it were my money?� I�m amazed how many theoretical arguments evaporate when faced with this question. ~ Kent Beck (born: 1961 age: 49) , evangelist for extreme programming.
From: Kevin McMurtrie on 16 Mar 2010 11:58 In article <lZKdnVdCN8aZ3QLWnZ2dnUVZ8vVi4p2d(a)eclipse.net.uk>, Ian Smith <ian.smith(a)gossinteractive.com> wrote: > Isn't this sort of thing that Enums and EnumMaps are meant for? Just > asking . . . > > Ian. Consider a situation where the design starts out using Enum but later needs to load definitions from a configuration file. That can't be done with Enum, EnumMap, or code that works with them. The original poster mentioned having large sets of definitions of Colors so I think a design using Enum would run into future problems. If Enums were to be used for declaration of data that may later become dynamic, I'd transfer them to a Map that had keys and values that aren't Enums. Unfortunately the code isn't so clean now. Two classes must be defined and they're both public. import java.awt.Color; import java.util.Collections; import java.util.HashMap; import java.util.Map; public interface FooColor { enum NamedColorSet { Black (new Color(0, 0, 0)), Obscure_Gray (new Color(51, 51, 51)), Dark_Gray (new Color(102, 102, 102)), Light_Gray (new Color(153, 153, 153)), Pale_Gray (new Color(204, 204, 204)), White (new Color(255, 255, 255)); public final Color color; NamedColorSet (Color c) { color= c; } } public static final Map<String, Color> EIGHT_BIT_COLORS = Collections.unmodifiableMap(new HashMap<String, Color>() { { for (NamedColorSet n : NamedColorSet.values()) put (n.name(), n.color); } }); } -- I won't see Google Groups replies because I must filter them as spam
First
|
Prev
|
Next
|
Last
Pages: 1 2 3 4 5 Prev: JNI win32 and Layered windows. Next: Design Question |