ホームページ > Java > &#&チュートリアル > Java エラー: Lambda パラメーターの Java11 ローカル変数構文 (var キーワード) エラー、処理方法と回避方法

Java エラー: Lambda パラメーターの Java11 ローカル変数構文 (var キーワード) エラー、処理方法と回避方法

PHPz
リリース: 2023-06-24 18:33:23
オリジナル
1056 人が閲覧しました

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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート