Le type de retour - le type de données de la valeur renvoyée par la méthode ou void si la méthode ne renvoie pas de valeur.
http://download.Oracle.com/javase/tutorial/Java/javaOO/methods.html
Ok, alors .. Voici ma question:
public class EnumTest {
Day day;
public EnumTest(Day day) {
this.day = day;
}
public void tellItLikeItIs() {
switch (day) {
case MONDAY: System.out.println("Mondays are bad.");
break;
case FRIDAY: System.out.println("Fridays are better.");
break;
case SATURDAY:
case SUNDAY: System.out.println("Weekends are best.");
break;
default: System.out.println("Midweek days are so-so.");
break;
}
}
public static void main(String[] args) {
EnumTest firstDay = new EnumTest(Day.MONDAY);
firstDay.tellItLikeItIs();
EnumTest thirdDay = new EnumTest(Day.WEDNESDAY);
thirdDay.tellItLikeItIs();
EnumTest fifthDay = new EnumTest(Day.FRIDAY);
fifthDay.tellItLikeItIs();
EnumTest sixthDay = new EnumTest(Day.SATURDAY);
sixthDay.tellItLikeItIs();
EnumTest seventhDay = new EnumTest(Day.SUNDAY);
seventhDay.tellItLikeItIs();
}
}
http://download.Oracle.com/javase/tutorial/Java/javaOO/enum.html
Le code ci-dessus ne fonctionne pas sans vide.
Exception in thread "main" Java.lang.Error: Unresolved compilation problems:
The method tellItLikeItIs() is undefined for the type EnumTest
Qu'est-ce qui m'a échappé? Pourquoi y a-t-il un vide là-dedans?
La raison pour laquelle le code ne fonctionnera pas sans void
est que la méthode System.out.println(String string)
ne renvoie rien et affiche uniquement les arguments fournis sur le terminal de sortie standard, qui est le moniteur de l'ordinateur dans la plupart des cas. Quand une méthode ne retourne "rien", vous devez spécifier cela en mettant le mot clé void
dans sa signature.
Vous pouvez voir la documentation de System.out.println ici:
http://download.Oracle.com/javase/6/docs/api/Java/io/PrintStream.html#println%28Java.lang.String%29
Pour approfondir la question, println est un exemple classique de méthode qui effectue un calcul en tant qu '"effet secondaire".
Vous voulez dire la méthode tellItLikeItIs
? Oui, vous devez spécifier void
pour indiquer que la méthode ne renvoie rien . Toutes les méthodes doivent avoir un type de retour spécifié, même si c'est void
.
Cela ne retourne certainement pas de chaîne - regardez, il n'y a pas d'instructions de retour nulle part. Ce n'est pas vraiment clair pourquoi vous pensez que renvoie une chaîne. C'est imprimer des chaînes sur la console, mais ce n'est pas la même chose que renvoyer une chaîne depuis la méthode.
Void: le modificateur de type void indique que la méthode principale ne renvoie aucune valeur. Tous les paramètres d'une méthode sont déclarés dans un prior de parenthèses. String args [] déclare un paramètre nommé args contenant un tableau d'objets de la chaîne de type classe.
Le vide ne retourne rien; il indique au compilateur que la méthode n'a pas de valeur de retour.
void
signifie qu'il ne retourne rien. Il ne renvoie pas de chaîne, vous écrivez une chaîne dans System.out
mais vous n'en renvoyez pas.
Vous devez spécifier ce qu'une méthode retourne, même si vous dites simplement qu'elle ne retourne rien.
Techniquement, ils auraient pu concevoir le langage de sorte que si vous n'écrivez pas un type de retour, il est supposé ne rien renvoyer. Cependant, vous écrivez explicitement void
permet de garantir que l'absence de valeur renvoyée est intentionnelle et non accidentelle.
Lorsque le type de retour est nul, votre méthode ne renvoie rien.
Regardez à nouveau votre code: il n'y a pas de retour dans cette méthode. Vous imprimez sur la console et quittez.