On 2007-11-24 11:57:48 -0800, "Mike Schilling"
<mscottschilling@hotmail.com> said:
Kevin wrote:
Did not find out the answer after some google:
how can we create a static hashtable with some initial values there?
static Hashtable ht = new Hasthable();
will only create a empty one. Suppose I want to put some Integer
values as keys and values of this hashtable, how can I do that?
Use a static init block (And use a HashMap; Hashtable is obsolete)
static Map map;
static
{
map = new HashMap();
map.put("if", IF_TOKEN);
map.put("else", ELSE_TOKEN);
...
}
There is a trick for emulating (sort of) map literals in Java that
might be useful here:
static Map<String, Whatever> map = new HashMap<String, Whatever> () {{
put ("if", IF_TOKEN);
put ("else", ELSE_TOKEN);
// ...
}};
It does have the cost of requiring one more class to be loaded. It
will also confuse reflection-based code that expects the 'map' field
to _be_ a specific subtype rather than _assignable to_ a specific
subtype. OTOH, I find both of those concerns are rarely important in
my own code.
It'll also confuse the hell out of anyone who's never seen it before. I got