戻り値の型-メソッドによって返される値のデータ型、またはメソッドが値を返さない場合はvoid。
http://download.Oracle.com/javase/tutorial/Java/javaOO/methods.html
さて、それでは..ここに私の質問があります:
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
上記のコードは無効でなければ機能しません。
Exception in thread "main" Java.lang.Error: Unresolved compilation problems:
The method tellItLikeItIs() is undefined for the type EnumTest
私は何を逃しましたか?なぜそこにボイドがあるのですか?そして、それは文字列を返しますか?
void
なしではコードが機能しない理由は、System.out.println(String string)
メソッドが何も返さず、指定された引数を標準出力端末(ほとんどの場合コンピューターモニター)に出力するためです。メソッドが「何も」を返さない場合、署名にvoid
キーワードを挿入して指定する必要があります。
System.out.printlnのドキュメントは次の場所にあります。
http://download.Oracle.com/javase/6/docs/api/Java/io/PrintStream.html#println%28Java.lang.String%29
問題をさらに推し進めるため、printlnは、「副作用」として計算を実行する方法の典型的な例です。
tellItLikeItIs
メソッドのことですか?はい、メソッドdoes n'tが何も返さないことを指定するには、void
を指定する必要があります。すべてのメソッドhaveは、void
であっても戻り値の型を指定します。
それは確かに文字列を返しません-見て、どこにもreturnステートメントはありません。あなたがそれを考える理由は本当に明確ではありませんis文字列を返します。 printingコンソールへの文字列ですが、それはメソッドから文字列を返すこととは異なります。
無効:型修飾子voidは、mainメソッドが値を返さないことを示します。メソッドへのすべてのパラメーターは、括弧の前で宣言されます。ここで、String args []は、クラスタイプstringのオブジェクトの配列を含むargsという名前のパラメーターを宣言します。
Voidは何も返しません。メソッドに戻り値がないことをコンパイラに伝えます。
void
は、何も返さないことを意味します。文字列を返しません。System.out
に文字列を書き込みますが、返しません。
何も返さないと言っているだけでも、メソッドが返すものを指定する必要があります。
技術的に言えば、戻り値の型を記述しない場合は何も返さないと想定されるように言語を設計できたかもしれませんが、void
を明示的に記述することで、戻り値がないことを意図的に保証できます偶然ではありません。
戻り値の型がvoidの場合、メソッドは何も返しません。
コードをもう一度見てください。そのメソッドには戻り値はありません。コンソールに印刷して終了します。