小さな調整の力: Java #s のフロー スコープとパターン マッチングが明らかに
Java 開発者の 1 日: Java 17 の微妙な力
それは、コーヒーがちょうどよく、コードがカップに淹れたコーヒーと同じくらいスムーズに流れているように見えた朝のことでした。あなたはデスクに座り、プロジェクトの特に厄介な部分、つまり何日も苦労させられていたモジュールに取り組む準備をしていました。問題はロジックの複雑さではなく、むしろ、何行も続くように見えるぎこちない繰り返しコードでした。
あなたはため息をつき、椅子にもたれかかりました。 もっと良い方法があるはずです、あなたはそう思いました。
最初の問題: スコープクリープ
あなたの心は、昨夜遅くまで起きていた虫のことを思い出しました。これは、潜伏性があり追跡が困難なバグの 1 つであり、広範に宣言された変数によって引き起こされるエラーでした。原因は、数週間前に作成した if else ステートメントであり、必要になった後も外部スコープに変数が残っていたことが原因でした。
Object obj = 123; String result; if (obj instanceof String) { result = (String) obj; } else { result = obj.toString(); } System.out.println(result);
コードは確かに機能しました。しかし、何か気になることがありました。変数の結果は、以前のフローからの幽霊のようにより広い範囲にぶら下がっており、混乱やさらに悪いことに別のバグを引き起こす可能性がありました。
しかし、Java 17 について読んだことを思い出しました。フロー スコープ と呼ばれる小さな機能です。それは、一見小さな変化に見えても、大きな変化をもたらす可能性のある変化の 1 つでした。フロースコープを使用すると、変数を必要な特定のブロックに限定して、コードの残りの部分をクリーンかつ集中的に保つことができます。
あなたは試してみることにしました。
Object obj = 123; if (obj instanceof String str) { System.out.println(str); } else { System.out.println(obj.toString()); }
まるで重荷が取れたかのようでした。コードはよりタイトで、よりエレガントになりました。不必要な変数がなくなり、完全に理にかなったフローが残りました。思わず微笑みました。小さな勝利ではありましたが、それでも満足のいく勝利でした。
2 番目の問題: 型チェックの研削
成功に勇気づけられて、あなたは、悩まされていたコードの別のセクションに目を向けました。これは古典的なシナリオでした。オブジェクトは String、Integer、Double など何でもあり、それに対して何かを行う前にその型を確認する必要がありました。
古い方法は不格好で、良い部分に到達するために複数の手順が必要でした:
Object obj = "Hello, World!"; if (obj instanceof String) { String str = (String) obj; System.out.println(str.toUpperCase()); }
それを見てあなたはうめきました。確かに、それはうまくいきましたが、なぜタイプを確認してからキャストする必要があったのでしょうか?もっとシンプルにできないのでしょう?
そこで、Java 17 のもう 1 つの小さな宝石を思い出しました。instanceof のパターン マッチング これは単なる構文糖衣ではありません。これは、コードを合理化し、より読みやすく、より少ないコードを作成する方法でした。エラーが発生しやすい
あなたはコードをリファクタリングしました。違いを確認したいと考えています:
Object obj = "Hello, World!"; if (obj instanceof String str) { System.out.println(str.toUpperCase()); }
効果はすぐに現れました。コードはよりクリーンで簡潔になりました。型チェックとキャストは 1 つのものになり、すべて 1 行になりました。あたかもコードがユーザーの言語を話しているかのようで、余分なノイズは一切なく、ユーザーが望んでいることを正確に実行します。
Java 17 の魔法: すべてをまとめる
日が経つにつれて、これらの機能をますます使用し、熟練した職人のようにコードに組み込んでいることに気づきました。あなたは、これらの小さな変化、つまり、各部分の合計よりも大きなものを生み出すために協力する方法の美しさに気づき始めました。
午後までに、あなたはいつも少しぎこちないと感じていた古いコードのリファクタリングに没頭していました。これは、混合型の配列を処理するループであり、各要素には独自の特別な処理が必要でした。以前は、コードは冗長で、各型チェックの後に明示的なキャストが続いていました。
しかし、Java 17 のフロー スコープとパターン マッチングにより、より良い方法が見つかりました。
public class PatternMatchingDemo { public static void main(String[] args) { Object[] elements = {"Java", 17, 3.14, "Pattern Matching"}; for (Object element : elements) { if (element instanceof String str) { System.out.println("String: " + str.toUpperCase()); } else if (element instanceof Integer i) { System.out.println("Integer: " + (i * 2)); } else if (element instanceof Double d) { System.out.println("Double: " + (d * 2)); } else { System.out.println("Unknown type"); } } } }
コードは合理化され、ロジックの各ブロックは独自のスコープ内に含まれ、変数は特定のフローにきちんと結び付けられました。あなたは、このような小さな変化がどのようにして大きな影響を与えることができるかに驚きました。定型的な繰り返しはなくなり、適切だと感じられる明確さと単純さに置き換えられました。
結論: 静かな革命
その日の準備を整えるとき、Java 17 がコードをどれほど変えたかを考えずにはいられませんでした。これらは派手な新機能ではありませんでしたが、それ自体が静かな方法で強力でした。フロー スコープとパターン マッチングは、より効率的であるだけでなく、読みやすく保守しやすいコードを作成するのに役立ちました。
ソフトウェア開発の世界では、小さなことが大きな違いを生むことがよくあります。そして今日、Java 17 の小さなトリックであるフロー スコープとパターン マッチングが、コードを 1 行ずつ改善するために必要なものであることがわかりました。
以上が小さな調整の力: Java #s のフロー スコープとパターン マッチングが明らかにの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











一部のアプリケーションが適切に機能しないようにする会社のセキュリティソフトウェアのトラブルシューティングとソリューション。多くの企業は、内部ネットワークセキュリティを確保するためにセキュリティソフトウェアを展開します。 ...

多くのアプリケーションシナリオでソートを実装するために名前を数値に変換するソリューションでは、ユーザーはグループ、特に1つでソートする必要がある場合があります...

システムドッキングでのフィールドマッピング処理は、システムドッキングを実行する際に難しい問題に遭遇することがよくあります。システムのインターフェイスフィールドを効果的にマッピングする方法A ...

データベース操作にMyBatis-Plusまたはその他のORMフレームワークを使用する場合、エンティティクラスの属性名に基づいてクエリ条件を構築する必要があることがよくあります。あなたが毎回手動で...

intellijideaultimatiateバージョンを使用してスプリングを開始します...

Javaオブジェクトと配列の変換:リスクの詳細な議論と鋳造タイプ変換の正しい方法多くのJava初心者は、オブジェクトのアレイへの変換に遭遇します...

eコマースプラットフォーム上のSKUおよびSPUテーブルの設計の詳細な説明この記事では、eコマースプラットフォームでのSKUとSPUのデータベース設計の問題、特にユーザー定義の販売を扱う方法について説明します。

Redisキャッシュソリューションは、製品ランキングリストの要件をどのように実現しますか?開発プロセス中に、多くの場合、ランキングの要件に対処する必要があります。
