Re: constructing a constant HashMap
Arne Vajh=F8j wrote:
B1ll Gat3s wrote:
Arne Vajh=F8j wrote:
B1ll Gat3s wrote:
This works in ANY setting where an expression of type Map<String,Strin=
g>
is appropriate:
new HashMap<String,String> () {
{
put("aaa", "bbb");
...
}}
But it is way more difficult to read
No it isn't.
Yes - it is.
Read what Tom wrote:
#and it is a very useful but also highly surprising construct (i love
#dropping one in front of my pair when pair programming, and watching
#their brains trying to work out what's going on - it takes a while to
#realise it's not a special syntax, just a combination of two other
#bits of syntax).
Yeah, but once you're used to it it's quite readable. So you're both right=
..
The question of "readability" shouldn't be treated like an absolute - it is=
or it ain't. Readability is relative to experience and cognitive style. =
To someone not trained in computer programmers, none of it is readable. To=
a junior programmer, anonymous classes are rather "unreadable". Should yo=
u eschew them for that reason? To a slightly less junior programmer the an=
onymous-class/initializer combination cited here is strange, but should you=
really code to his level? Or maybe should that programmer up their skill =
a little and stop being so namby-pamby about legitimate, useful syntax?
There's also a relative readability between that idiom and alternatives to =
load a Map. There's gotta be an initializer somewhere, folks!
Personally, I don't like the overly-clever anonymous/initializer idiom. I =
prefer a stodgy old separate initializer block and a non-subclasses HashMap=
.. I think it's more readable that way than the tricky subclass way present=
ed here.
--
Lew