Wechseln Sie in eleganter Weise in java 1.6 für string
Ich bin mit java 1.6 und ich weiß, dass von java 1.7 gibt es die option zum Umschalten auf string
aber hier verwende ich die if/elseif, um die Art der route name,meine Frage, ob es einen eleganten Weg,
dass ich ändern kann, es zu wechseln, Doch
public static SwitchType<?> switchT(final String typeName,
final String memberName) {
if (typeName.equals("java.lang.String")) {
return new SwitchInputType<String>(new String(memberName + " "));
} else if (typeName.equals("char")) {
return new SwitchInputType<Character>(new Character('a'));
} else if (typeName.equals("decimal") ||
typeName.equals("java.math.BigDecimal")) {
return new SwitchInputType<BigDecimal>(new BigDecimal("34.58"));
} else if (typeName.equals("boolean")) {
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte man eine
Map<String, SwitchTypeFactory>
:Viele Muster sind verfügbar, die aus der Nutzung der Aufzählung der Verwendung einer
Map<String,Implementation>
aber keiner von Ihnen wird präziser, noch schneller, dass das, was Sie haben in diesem konkreten Fall. Sie würde nur Sinn machen, wenn mehr code angewiesen war diesertypeName
.Obwohl es vielleicht ein wenig Zähler intuitive Anwendung
enum
bewiesen hat, sehr stark in dieser Hinsicht.Jeder
enum
hat einevalueOf(String)
Methode gibt ein Element zurück, für diesen Namen. Dann können Sie die abgerufene Element in einer switch-Anweisung. Der einzige hässliche daran ist, dassvalueOf(String)
wirft einIllegalArgumentException
. So zu fangen, dass ist äquivalent zu einem Standard-Fall.Auch enums können interfaces implementieren. Entweder durch die Bereitstellung einer Implementierung für jedes element oder eine Globale.
Die zweite Art macht es sehr einfach, um die Funktionalität zu erweitern (solange bleibt er in einem Modul, das erstellen von Unterklassen ist nicht möglich, mit enums).