ホームページ >Java >&#&チュートリアル >Java が「互換性のない型: void は ... に変換できません」をスローするのはなぜですか?

Java が「互換性のない型: void は ... に変換できません」をスローするのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-26 14:35:13477ブラウズ

Why Does Java Throw

互換性のない型について: Void は変換できません

Java コンパイラ エラー メッセージ「互換性のない型: void は ... に変換できません」戻り値を必要とする方法で値を返さないメソッドを使用しようとしたことを示します。 value.

Void とは何ですか?

Void は、「値がない」ことを意味する Java の一意の型です。 void として宣言されたメソッドは結果を返しません。

エラーの原因

このエラーは次の場合に発生します。

  • として宣言されたメソッドvoid が呼び出され、コードはその戻り値を変数に代入するか、それを変数内で使用しようとします。 Expression.
  • メソッドは特定の型の戻り値を期待していますが、呼び出されたメソッドは void を返します。

エラーの修正方法

解決策は、目的の動作によって異なります:

  • メソッドが必要な場合値を返す: 適切な型 (int、String など) を返すようにメソッド宣言を変更します。
  • メソッドが値を返す必要がない場合: 代入を省略します。または、戻り値を使用せずにメソッドを使用します。

詳細例

次のコードを考えてみましょう:

public class Test {
    private static void add(int a, int b) {
        int res = a + b;
    }

    public static void main(String[] args) {
        int sum = add(1, 1);
    }
}

このコードをコンパイルすると、エラーが発生します:

error: incompatible types: void cannot be converted to int

これは、add メソッドがvoid として宣言されていますが、メイン メソッドでの呼び出しでは、戻り値を int 変数に割り当てようとします。これを修正するには:

  • オプション 1: 結果を返すように追加メソッドを変更します:
private static int add(int a, int b) {
    int res = a + b;
    return res;
}
  • オプション2: メインの代入を省略しますメソッド:
public static void main(String[] args) {
    add(1, 1);
}

以上がJava が「互換性のない型: void は ... に変換できません」をスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。