Java で Void Type Not Allowed Here エラーを修正する

Rupam Yadav 2023年10月12日
  1. void type not allowed here エラーとは何ですか
  2. Java の Void Type Not Allowed Here エラーの修正 - main() メソッドでは印刷しない
  3. Java の Void Type Not Allowed Here エラーの修正 - printMessage1() の印刷の代わりに文字列を返す
Java で Void Type Not Allowed Here エラーを修正する

Java で大きなプログラムを作成するときは多くの関数を使用しますが、エラーが発生する場合があります。コンパイラがスローする可能性のあるエラーの 1つは、この記事で説明されている void type not allowed here というエラーです。

void type not allowed here エラーとは何ですか

Java で関数を作成するには、アクセス修飾子、戻り値の型、括弧付きの関数名を記述し、関数本体は中括弧で囲みます。関数からいくつかのタイプのデータを返すことができますが、何も返したくない場合は、キーワード void を使用して、メソッドから何も返したくないことをコンパイラーに通知します。

以下のプログラムには、2つのメソッドを含むクラス JavaExample があります。1つ目は main() 関数で、2つ目は出力ステートメント System.out.println() を持つ printMessage1() です。printMessage1() がパラメータとして受信するメッセージを出力します。

関数 printMessage1() は何も返さず、メッセージを出力するだけです。戻り型として void 型を使用します。別の print ステートメントを使用しますが、main() メソッドで、引数として String 1 を使用してその中の printMessage1() 関数を呼び出します。

コードを実行すると、出力に void type not allowed here というエラーがスローされます。これは、printMessage1()value を出力する print ステートメントが既にあり、print ステートメントで関数を呼び出しても何も返さないために発生します。main メソッドで出力するものは何もありません。

public class JavaExample {
  public static void main(String[] args) {
    System.out.println(printMessage1("String 1"));
  }

  static void printMessage1(String value) {
    System.out.println(value);
  }
}

出力:

java: 'void' type not allowed here

Java の Void Type Not Allowed Here エラーの修正 - main() メソッドでは印刷しない

このエラーの最初の解決策は、メソッド自体にすでに System.out.println() ステートメントがあり、何も返さないため、print ステートメントで関数 printMessage1() を呼び出さないことです。

このコードでは、printMessage1() 関数の本体を println() ステートメントとして記述します。引数として文字列を使用して、main()printMessage1() メソッドを呼び出します。

public class JavaExample {
  public static void main(String[] args) {
    printMessage1("String 1");
  }

  static void printMessage1(String value) {
    System.out.println(value);
  }
}

出力:

String 1

Java の Void Type Not Allowed Here エラーの修正 - printMessage1() の印刷の代わりに文字列を返す

2 番目の解決策は、関数で戻り型を指定し、値を返し、関数を呼び出す場所にそれを出力することです。

メソッド printMessage1() を記述しますが、戻り値は String です。メソッドの本体内で、呼び出されたときに返したい value とともに return キーワードを使用します。main() メソッドでは、関数 printMessage1() を print ステートメントに呼び出しますが、メソッドが値を返すため、エラーは発生しません。

public class JavaExample {
  public static void main(String[] args) {
    System.out.println(printMessage1("How are you doing today?"));
    System.out.println(printMessage1("String 2"));
  }

  static String printMessage1(String value) {
    return value;
  }
}

出力:

How are you doing today?
String 2
著者: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

関連記事 - Java Void