Einige Message-Klasse einen Tag-Namen zurückkehren kann basierend auf Tag-Nummer
Da diese Klasse oft instanziiert ist, ich bin ein wenig widerstrebend eine HashMap für jede Instanz zu erstellen:Java hartcodierte Schalter vs hashmap
public class Message {
private HashMap<Integer,String> tagMap;
public Message() {
this.tagMap = new HashMap<Integer,String>();
this.tagMap.put(1, "tag1Name");
this.tagMap.put(2, "tag2Name");
this.tagMap.put(3, "tag3Name");
}
public String getTagName(int tagNumber) {
return this.tagMap.get(tagNumber);
}
}
zugunsten Hardcoding:
public class Message {
public Message() {
}
public String getTagName(int tagNumber) {
switch(tagNumber) {
case 1: return "tag1Name";
case 2: return "tag2Name";
case 3: return "tag3Name";
default return null;
}
}
}
Wenn Sie alles in der Mischung setzen (Memory, Performance, GC, ...)
Gibt es einen Grund, bei HashMap zu bleiben?
Wäre das nicht die Situation, in der ein 'enum' ideal wäre? – Edd
Wenn die Liste für alle Ihre Nachrichten identisch ist, können Sie die Karte auch statisch machen. – assylias
Haben Sie (durch Profiling) auch festgestellt, dass die Instanziierung der Klasse wirklich ein Problem ist? – joergl