From: Mike Schilling on
Lew wrote:
> You can then use 'import static' or the FQN

Careful, Lew, kids read this group.


From: Kevin McMurtrie on
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
Isn't this sort of thing that Enums and EnumMaps are meant for? Just
asking . . .

Ian.
From: Roedy Green on
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
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