23Jul/09Off
Statische Maps
Wieder was gelernt. Arrays kann man ja wie folgt initialisieren:
String[] allowed = new String[] {"text/html", "text/json"};
Aber was ist mit Maps?
public class Router {
public static final Map<String, Handler> routes;
static {
Map<String, Handler> map = new HashMap<String, Handler>();
map.put("/account", new AccountHandler());
map.put("/feed", new FeedHandler());
map.put("/opml", new OpmlHandler());
routes = Collections.unmodifiableMap(map);
}
}
Find ich gut. Endlich weiß ich sowas auch. Noch schneller gehts mit:
public static final Map<String , Handler> routes =
new HashMap<String , Handler>() {{
put("/account", new AccountHandler());
put("/feed", new FeedHandler());
put("/opml", new OpmlHandler());
}};
Juli 23rd, 2009
Wobei die double brace initialization ein zweischneidiges Schwert ist. Genau genommen wird dabei nämlich eine statische anonyme Klasse erzeugt, was bei vielen Zuweisungen die JVM ins Schwitzen (naja eigentlich nicht, aber du weißt schon…) bringt.
Siehe dazu auch http://stackoverflow.com/questions/924285/efficiency-of-java-double-brace-initialization