The return type—the data type of the value returned by the method, or void if the method does not return a value.
http://download.oracle.com/javase/tutorial/java/javaOO/methods.html
Okay, then.. Here is my 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
The above code does not work without void.
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
The method tellItLikeItIs() is undefined for the type EnumTest
What did I miss out? Why is there a void in there? And it does return a string?
The void keyword specifies that a method should not have a return value.
void is a Java keyword. Used at method declaration and definition to specify that the method does not return any type, the method returns void . It is not a type and there is no void references/pointers as in C/C++.
Any method declared void doesn't return a value. It does not need to contain a return statement, but it may do so.
Void methods do some action (called a side-effect); they do not return any value; Type methods return some value; they do not do an action. Examples of void methods include output methods such as: outputInt, outputDouble, outputString, outputlnInt, etc.
You mean the tellItLikeItIs
method? Yes, you have to specify void
to specify that the method doesn't return anything. All methods have to have a return type specified, even if it's void
.
It certainly doesn't return a string - look, there are no return statements anywhere. It's not really clear why you think it is returning a string. It's printing strings to the console, but that's not the same thing as returning one from the method.
The reason the code will not work without void
is because the System.out.println(String string)
method returns nothing and just prints the supplied arguments to the standard out terminal, which is the computer monitor in most cases. When a method returns "nothing" you have to specify that by putting the void
keyword in its signature.
You can see the documentation of the System.out.println here:
http://download.oracle.com/javase/6/docs/api/java/io/PrintStream.html#println%28java.lang.String%29
To press the issue further, println is a classic example of a method which is performing computation as a "side effect."
When the return type is void, your method doesn't return anything.
Look again at your code: There's no return in that method. You print to the console and exit.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With