switch
Der Switch kann nicht nur Byte-, Short-, Int-Typ- und String-Typwerte, sondern auch Aufzählungstypen als Ausdrücke verwenden. Dies ist praktisch, wenn Sie eine schnelle bedingte Verzweigung erstellen möchten.
Wenn diese Behauptung jedoch heftig wird ...
DayOfWeek-Aufzählung
enum DayOfWeek {
SUNDAY ("Sonntag"),
MONDAY ("Montag"),
TUESDAY ("Dienstag"),
WEDNESDAY ("Mittwoch"),
THURSDAY ("Donnerstag"),
FRIDAY ("Freitag"),
SATURDAY ("Samstag");
private String name;
private DayOfWeek(String name) {
this.name = name;
}
public String getName() {
return name;
}
};
Personenklasse
class Person {
private DayOfWeek dayOfWeek;
private String lyrics;
private Person(DayOfWeek dayOfWeek) {
setDayOfWeek(dayOfWeek);
}
//Statische Methode zum Erstellen einer Instanz
static Person todayIs(DayOfWeek dayOfWeek) {
return new Person(dayOfWeek).doSometing();
}
//Methode zum Einstellen des Tages
Person setDayOfWeek(DayOfWeek dayOfWeek) {
Objects.requireNonNull(dayOfWeek, "Nach Hause gehen");
this.dayOfWeek = dayOfWeek;
return this;
}
//Methode, um etwas zu tun
Person doSometing() {
lyrics = dayOfWeek.getName();
switch (dayOfWeek) {
case SUNDAY:
lyrics += "Gehe zum Markt";
break;
case MONDAY:
lyrics += "Schlagen Sie das Bad";
break;
case TUESDAY:
lyrics += "Betritt das Bad";
break;
case WEDNESDAY:
lyrics += "Meine Freunde kommen";
break;
case THURSDAY:
lyrics += "Geschickt";
break;
case FRIDAY:
lyrics += "Ohne Einfädeln";
break;
case SATURDAY:
lyrics += "Spricht nur";
break;
}
return this;
}
//Spielmethode
Person gambling(int amount) {
lyrics = dayOfWeek.getName();
switch (dayOfWeek) {
case SUNDAY:
case TUESDAY:
case THURSDAY:
case FRIDAY:
case SATURDAY:
lyrics += "Zu" + amount + "Verlieren";
break;
case MONDAY:
case WEDNESDAY:
lyrics += "Zu" + amount + "Gewinne eine Million";
break;
}
return this;
}
//Tuller-Methode
Person turya() {
switch (dayOfWeek) {
case SUNDAY:
lyrics += "Turya";
break;
case MONDAY:
lyrics += "Turya Lya";
break;
case TUESDAY:
lyrics += "Turya Turya Turya";
break;
case WEDNESDAY:
lyrics += "Turya Turya Turya";
break;
case THURSDAY:
lyrics += ",Ah?";
break;
case FRIDAY:
lyrics += "Teyuriya";
break;
case SATURDAY:
lyrics += "turya";
break;
default:
break;
}
return this;
}
//Gesangsmethode
Person sing() {
System.out.println(lyrics);
lyrics = "";
return this;
}
}
Auf diese Weise werden Sie krank. Es besteht auch die Gefahr eines unerwarteten Durchfalls, da die Beschreibung von "Bruch" weggelassen wird.
Beispiel für die Verwendung der Person-Klasse
Person.todayIs(MONDAY).sing()
.setDayOfWeek(TUESDAY).doSometing().turya().sing()
.setDayOfWeek(THURSDAY).gambling(100).turya().sing()
.setDayOfWeek(SATURDAY).doSometing().turya().sing();
Ausgabe
Am Montag ins Bad gehen
Am Dienstag bin ich im Bad Turya Turya Turya
Am Donnerstag 1 Million verloren, oder?
Samstag plaudert nur Turya
EnumMap
Es gibt eine EnumMap, die Daten verwalten kann, indem sie einer Aufzählung zugeordnet werden. Wenn Sie dies umschreiben,
Personenklasse (Korrektur)
class Person {
... //Vom Feld zur Methode weglassen, um den Tag einzustellen
//Methode, um etwas zu tun
Person doSometing() {
lyrics = dayOfWeek.getName() + SOMETHING_MAP.get(dayOfWeek);
return this;
}
//Spielmethode
Person gambling(int amount) {
lyrics = dayOfWeek.getName() + "Zu" + amount + "Zehntausend" + GAMBLING_MAP.get(dayOfWeek);
return this;
}
//Tuller-Methode
Person turya() {
lyrics += TURYA_MAP.get(dayOfWeek);
return this;
}
//Gesangsmethode
Person sing() {
System.out.println(lyrics);
lyrics = "";
return this;
}
// EnumMap
/**etwas*/
private static final EnumMap<DayOfWeek, String> SOMETHING_MAP =
new EnumMap<>(DayOfWeek.class) {{
put(SUNDAY, "Gehe zum Markt");
put(MONDAY, "Schlagen Sie das Bad");
put(TUESDAY, "Betritt das Bad");
put(WEDNESDAY, "Meine Freunde kommen");
put(THURSDAY, "Geschickt");
put(FRIDAY, "Ohne Einfädeln");
put(SATURDAY, "Spricht nur");
}};
/**Glücksspiel*/
private static final EnumMap<DayOfWeek, String> GAMBLING_MAP =
new EnumMap<>(DayOfWeek.class) {{
final String WIN = "Gewinnt";
final String LOSE = "Verlieren";
put(SUNDAY, LOSE);
put(MONDAY, WIN);
put(TUESDAY, LOSE);
put(WEDNESDAY, WIN);
put(THURSDAY, LOSE);
put(FRIDAY, LOSE);
put(SATURDAY, LOSE);
}};
/**Turya*/
private static final EnumMap<DayOfWeek, String> TURYA_MAP =
new EnumMap<>(DayOfWeek.class) {{
put(SUNDAY, "Turya");
put(MONDAY, "Turya Lya");
put(TUESDAY, "Turya Turya Turya");
put(WEDNESDAY, "Turya Turya Turya");
put(THURSDAY, ",Ah?");
put(FRIDAY, "Teyuriya");
put(SATURDAY, "turya");
}};
}
Vorerst sollte es einfacher sein, ...
Nicht gut genug! Ich bin nicht sicher, wie ich es verwenden soll, aber wenn es Daten sind, die direkt mit dem Enumerator verknüpft sind, werden sie direkt im Enumerator definiert, andernfalls wird es wie die Verwendung von EnumMap in jeder Klasse verwendet [^ 1]?
[^ 1]: Dieses Mal haben wir unter der Annahme, dass die DayOfWeek-Aufzählung in anderen Klassen wiederverwendet wird, keine anderen Daten als den Tagesnamen mit der Aufzählung verknüpft.
Recommended Posts