Java は、最新バージョン Java11 で新しいキーワード var を導入しました。これにより、明示的に宣言する必要がある型名を置き換えることができるため、コードが簡素化され、読みやすさが向上します。ただし、Lambda 式を使用する場合、var キーワードにより Lambda パラメータのローカル変数構文エラーが発生する場合があります。この記事では、このエラーの原因と対処方法と回避方法を紹介します。
なぜこのエラーが発生するのでしょうか?
Java11 より前では、ラムダ式の仮パラメータはその型を明示的に宣言する必要がありました。たとえば、文字列と整数を受け取る Lambda 式は次のようになります:
BiFunction<String, Integer, String> func = (String str, Integer num) -> str.substring(num);
Java 11 では、型名の代わりに var キーワードを使用して、上記のコードをより簡潔にすることができます:
BiFunction<String, Integer, String> func = (var str, var num) -> str.substring(num);
ただし、ラムダ式で var キーワードを使用するときにコンパイラがその型を推論できない場合、「ラムダパラメータのローカル変数構文」エラーが発生します。
たとえば、次のコードではこのエラーが発生します。
BiFunction<String, Integer, String> func = (var str, num) -> str.substring(num);
このうち、2 番目のパラメータ num では、型を明示的に宣言するために var キーワードが使用されていません。
このエラーに対処し、回避するにはどうすればよいですか?
このエラーに対処する方法は非常に簡単です。ラムダ式の各仮パラメータの型を明示的に指定するだけです:
BiFunction<String, Integer, String> func = (var str, Integer num) -> str.substring(num);
このようにして、コンパイラの型各仮パラメータが正しく推論できるようになり、Lambda パラメータのローカル変数構文エラーがなくなりました。
しかし、より良いアプローチは、ラムダ式での var キーワードの使用をできる限り減らすことです。 Java11ではvarキーワードは主にコードの簡略化や読みやすさの向上を目的として使用されていますが、ラムダ式では使い方を誤ると問題が発生します。したがって、ラムダ式を作成するときは、このエラーを回避するために各仮パラメータの型を明示的に指定することが最善です。
概要
Java11 では、var キーワードを使用するとコードが簡素化され、読みやすさが向上します。また、ラムダ式で使用すると、コードをより簡潔な形式にすることもできます。しかし同時に、var キーワードは、Lambda パラメータのローカル変数構文エラーなど、いくつかの詳細な問題も引き起こします。このエラーを回避するには、ラムダ式での var キーワードの使用を最小限に抑え、必要に応じて各仮パラメータの型を明示的に指定することをお勧めします。これにより、コードの可読性と正確性が保証され、開発効率が向上します。
以上がJava エラー: Lambda パラメーターの Java11 ローカル変数構文 (var キーワード) エラー、処理方法と回避方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。