switch
Le commutateur peut prendre non seulement des valeurs de type byte, short, int et des valeurs de type String, mais également des types d'énumération comme expressions, ce qui est pratique lorsque vous souhaitez créer une branche conditionnelle rapide.
Cependant, lorsque cette affirmation devient féroce ...
Énumération DayOfWeek
enum DayOfWeek {
SUNDAY ("dimanche"),
MONDAY ("Lundi"),
TUESDAY ("Mardi"),
WEDNESDAY ("Mercredi"),
THURSDAY ("Jeudi"),
FRIDAY ("Vendredi"),
SATURDAY ("samedi");
private String name;
private DayOfWeek(String name) {
this.name = name;
}
public String getName() {
return name;
}
};
Classe de personne
class Person {
private DayOfWeek dayOfWeek;
private String lyrics;
private Person(DayOfWeek dayOfWeek) {
setDayOfWeek(dayOfWeek);
}
//Méthode statique pour créer une instance
static Person todayIs(DayOfWeek dayOfWeek) {
return new Person(dayOfWeek).doSometing();
}
//Méthode pour régler le jour
Person setDayOfWeek(DayOfWeek dayOfWeek) {
Objects.requireNonNull(dayOfWeek, "rentrer chez soi");
this.dayOfWeek = dayOfWeek;
return this;
}
//Méthode pour faire quelque chose
Person doSometing() {
lyrics = dayOfWeek.getName();
switch (dayOfWeek) {
case SUNDAY:
lyrics += "Aller au marché";
break;
case MONDAY:
lyrics += "Frappez le bain";
break;
case TUESDAY:
lyrics += "Entrez dans le bain";
break;
case WEDNESDAY:
lyrics += "Mes amis viennent";
break;
case THURSDAY:
lyrics += "Envoyé";
break;
case FRIDAY:
lyrics += "Sans filetage";
break;
case SATURDAY:
lyrics += "Parle juste";
break;
}
return this;
}
//Méthode de jeu
Person gambling(int amount) {
lyrics = dayOfWeek.getName();
switch (dayOfWeek) {
case SUNDAY:
case TUESDAY:
case THURSDAY:
case FRIDAY:
case SATURDAY:
lyrics += "À" + amount + "Perdre";
break;
case MONDAY:
case WEDNESDAY:
lyrics += "À" + amount + "Gagnez un million";
break;
}
return this;
}
//Méthode Tuller
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;
}
//Méthode de chant
Person sing() {
System.out.println(lyrics);
lyrics = "";
return this;
}
}
De cette façon, vous tomberez malade. Il existe également un risque de chute inattendue en raison de l'omission de la description de «rupture».
Exemple d'utilisation de la classe Person
Person.todayIs(MONDAY).sing()
.setDayOfWeek(TUESDAY).doSometing().turya().sing()
.setDayOfWeek(THURSDAY).gambling(100).turya().sing()
.setDayOfWeek(SATURDAY).doSometing().turya().sing();
production
Prenez le bain le lundi
Mardi, je suis dans le bain Turya Turya Turya
Perdre 1 million jeudi, hein?
Samedi est juste en train de bavarder avec Turya
EnumMap
Il existe un EnumMap qui peut gérer les données en les associant à une énumération. Si vous réécrivez en utilisant ceci,
Classe de personne (correction)
class Person {
... //Omettre du champ à la méthode pour définir le jour
//Méthode pour faire quelque chose
Person doSometing() {
lyrics = dayOfWeek.getName() + SOMETHING_MAP.get(dayOfWeek);
return this;
}
//Méthode de jeu
Person gambling(int amount) {
lyrics = dayOfWeek.getName() + "À" + amount + "Dix mille" + GAMBLING_MAP.get(dayOfWeek);
return this;
}
//Méthode Tuller
Person turya() {
lyrics += TURYA_MAP.get(dayOfWeek);
return this;
}
//Méthode de chant
Person sing() {
System.out.println(lyrics);
lyrics = "";
return this;
}
// EnumMap
/**quelque chose*/
private static final EnumMap<DayOfWeek, String> SOMETHING_MAP =
new EnumMap<>(DayOfWeek.class) {{
put(SUNDAY, "Aller au marché");
put(MONDAY, "Frappez le bain");
put(TUESDAY, "Entrez dans le bain");
put(WEDNESDAY, "Mes amis viennent");
put(THURSDAY, "Envoyé");
put(FRIDAY, "Sans filetage");
put(SATURDAY, "Parle juste");
}};
/**jeux d'argent*/
private static final EnumMap<DayOfWeek, String> GAMBLING_MAP =
new EnumMap<>(DayOfWeek.class) {{
final String WIN = "Victoires";
final String LOSE = "Perdre";
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");
}};
}
Pour le moment, ça devrait être plus facile à gérer ...
Pas assez bon! Je ne sais pas comment l'utiliser, mais si ce sont des données qui sont directement liées à l'énumérateur, elles sont définies directement dans l'énumérateur, sinon elles sont utilisées comme utiliser EnumMap dans chaque classe [^ 1]?
[^ 1]: Cette fois, en supposant ce dernier (en supposant que l'énumération DayOfWeek est réutilisée dans d'autres classes), nous n'avons associé aucune donnée autre que le nom du jour à l'énumération.
Recommended Posts