目次
pattermingパターンマッチングのinstanceofとは何ですか?
?パターンマッチングの作業メカニズム
使用するためのプレキューション
?実用的なアプリケーションシナリオ
1。equals equals()メソッドの書き換えは簡単です
2。コレクションの混合タイプを処理します(推奨されませんが、避けられないこともあります)
?進化プロセス(Javaバージョンでサポート)
✅概要:パターンマッチングの利点
ホームページ Java &#&チュートリアル 現代のジャワの「instanceof」のパターンマッチング

現代のジャワの「instanceof」のパターンマッチング

Jul 26, 2025 am 03:37 AM
java

Java 14では、インスタンスのパターンマッチングをプレビュー機能として導入し、タイプのチェック中にタイプ変数を宣言し、自動的に変換できるようにします。 2。パターンマッチングは、if(obj instanceof variable)構文を介して実装され、変数は条件の範囲でのみ有効であり、キャストを必要としません。 3.この機能は、コードの読みやすさとセキュリティを改善し、ボイラープレートコードを削減し、ClassCastExceptionのリスクを回避します。 4.それを使用する場合、変動範囲と命名競合に注意を払う必要があり、既存の外部変数をマスクすることはできません。 5. Java 16以来、パターンマッチングのインスタンスは正式な標準関数になりました。これは、等しいメソッドの書き換えや多型処理などのシナリオに広く適用されます。従来の明示的なタイプ変換を置き換えることをお勧めします。

現代のジャワの「instanceof」のパターンマッチング

Java 14は、型チェックとタイプの変換コードを簡素化するために設計された重要な言語改善である、 instanceofパターンマッチングを導入します。従来のJavaでは、通常、このようなinstanceofを使用します。

現代のジャワの「instanceof」のパターンマッチング
 if(obj instanceof string){
    文字列s =(string)obj;
    system.out.println(s.length());
}

ここでは、最初にタイプを判断してから、キャスト、繰り返し、冗長性を実行する必要があります。パターンマッチングにより、このプロセスがよりシンプルで、より安全で、読みやすくなります。


pattermingパターンマッチングのinstanceofとは何ですか?

Java 14(プレビュー機能として)から始めて、 instanceofタイプパターン変数を直接宣言することをサポートします。タイプが一致する場合、変数は型変換を自動的に完了し、 ifブロック内で動作します。

現代のジャワの「instanceof」のパターンマッチング

文法:

 if(obj instanceof type variable){
    //変数はすでにタイプで、キャストは必要ありません}

例:

現代のジャワの「instanceof」のパターンマッチング
 if(obj instanceof string s){
    system.out.println(s.length()); // sは自動変換された文字列です
} それ以外 {
    System.out.println( "文字列ではない");
}

このコード行は、以前の明示的な変換と同等ですが、よりシンプルで安全です。


?パターンマッチングの作業メカニズム

パターンマッチングは、2つの操作を組み合わせたものです。

  1. タイプチェック(判断instanceof
  2. スコープ内で変換を入力します

コンパイラは次のことを保証します

  • 変数s 、条件がtrueスコープでのみ利用可能です
  • タイプ変換は安全で、 ClassCastExceptionは表示されません
if(obj instanceof integer i && i> 10){
    system.out.println( "10を超える整数:" i);
}

注:条件でi新しい変数を使用したり、その後の論理的判断に参加することもできます。


使用するためのプレキューション

  • 変数スコープ制限:概略図は、 instanceoftrueスコープでのみ有効です。

     if(!(obj instanceof string s)){
        // Sはここでは利用できません!
        戻る;
    }
    system.out.println(s.length()); //✅アクセス可能
  • 外部変数をマスクすることはできません:既存の変数名をパターン変数として使用することはできません。

    文字列s = "hello";
    if(obj instanceof string s){} //❌コンピレーションエラー:可変複製
  • サポート継承構造Objectから特定のタイプを抽出するなど、多型オブジェクトを処理するためによく使用されます。

    オブジェクトobj = getSomeObject();
    
    if(obj instanceof dog d){
        D.BARK();
    } else if(obj instanceof cat c){
        c.meow();
    }

?実用的なアプリケーションシナリオ

1。equals equals()メソッドの書き換えは簡単です

伝統的な文章:

 public boolean equals(オブジェクトo){
    if(!(o instanceof person))falseを返します。
    人p =(人)o;
    return name.equals(p.name);
}

パターンマッチングを使用した後:

 public boolean equals(オブジェクトo){
    personのinstance of p && name.equals(p.name);
}

より短く、より明確で、不必要なブラケットや変換を回避します。

2。コレクションの混合タイプを処理します(推奨されませんが、避けられないこともあります)

 for(object item:mixedlist){
    if(item instanceof string s){
        system.out.println( "string:" s.touppercase());
    } else if(Item InstanceOf Integer I){
        System.out.println( "number:"(i * 2));
    }
}

?進化プロセス(Javaバージョンでサポート)

Javaバージョン
Java 14 プレビュー機能(有効にする必要があります)
Java 15 2番目のプレビュー
Java 16 公式リリース✅

Java 16から始めて、パターンマッチングのinstanceof標準機能になり、追加の構成なしで使用できます。


✅概要:パターンマッチングの利点

  • ボイラープレートコードを削減(ボイラープレート)
  • 明示的なキャストを排除して、エラーのリスクを減らします
  • コードの読みやすさとセキュリティを改善します
  • より自然に「タイプクエリ使用」の一般的なパターンをサポートします

基本的にそれだけです。 instanceofを書き込み、手動で変換しないでください - パターンマッチングを使用して、よりモダンでエレガントになります。

以上が現代のジャワの「instanceof」のパターンマッチングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Python辞書の例にキーが存在するかどうかを確認します Python辞書の例にキーが存在するかどうかを確認します Jul 27, 2025 am 03:08 AM

INキーワードを使用して、簡潔で効率的で高度に読みやすいため、キーが辞書に存在するかどうかを確認することをお勧めします。 2。key()メソッドを使用して、キーが存在するかどうかを判断することはお勧めしません。キーが存在するが値がないときに誤解されるためです。 3。Keys()メソッドを使用できますが、デフォルトでキーを確認するために冗長です。 4.値を取得する必要があり、予想されるキーが通常存在する場合、Try-Exceptを使用してKeyErrorの例外をキャッチできます。最も推奨される方法は、安全で効率的であり、ほとんどのシナリオに適したNOの価値の影響を受けないINキーワードを使用することです。

Go byの例でStdinから読む Go byの例でStdinから読む Jul 27, 2025 am 04:15 AM

FMT.Scanfを使用して、単純な構造化データに適したフォーマット入力を読み取りますが、スペースに遭遇すると文字列が切断されます。 2。bufio.scannerを使用して行ごとに読み取り、マルチライン入力、EOF検出、パイプライン入力をサポートし、スキャンエラーを処理できることをお勧めします。 3。Io.Readall(os.stdin)を使用して、すべての入力を一度に読み取ります。大きなブロックデータまたはファイルストリームの処理に適しています。 4.リアルタイムの主要な応答には、golang.org/x/termなどのサードパーティライブラリが必要であり、Bufioは従来のシナリオには十分です。実用的な提案:インタラクティブなシンプルな入力にFMT.SCANを使用し、ライン入力またはパイプラインにbufio.scannerを使用し、io.readallを使用して大規模なブロックデータを使用し、常に処理します

Laravel Lazy Loadingと熱心な読み込み Laravel Lazy Loadingと熱心な読み込み Jul 28, 2025 am 04:23 AM

怠zyな読み込みは、アソシエーションにアクセスするときにクエリのみであり、n 1の問題に簡単につながる可能性があります。これは、関連データが必要かどうかが判断されないシナリオに適しています。 2。()を使用して緊急読み込みを使用して関連データをロードして、バッチ処理シナリオに適したn 1クエリを回避します。 3.緊急荷重を使用してパフォーマンスを最適化する必要があり、N 1の問題はLaraveldebugbarなどのツールを介して検出できます。モデルの属性を備えた$は、不必要なパフォーマンスオーバーヘッドを避けるために慎重に使用されます。

Pythonメモリ管理の例 Pythonメモリ管理の例 Jul 28, 2025 am 01:10 AM

Pythonのメモリ管理は、参照カウントとゴミ収集メカニズムに基づいています。 1.参照カウントメカニズムにより、参照番号が0の場合にオブジェクトがすぐにリリースされることが保証されます。Sys.getrefcount()の戻り値は、基準自体を増やすため、実際の参照よりも1高くなります。 2。循環参照は参照カウントでクリーニングすることはできず、GCモジュールの世代リサイクルに依存します。 gc.collect()を呼び出すことは、到達不可能なオブジェクトをリサイクルできます。 3。実際の開発では、大きなオブジェクト参照の長期保持を避ける必要があります。 WeakRefの弱い参照を使用し、メモリをリリースするためにタイムリーな場所を使用し、Tracemallocを使用してメモリの割り当てを監視できます。 4。概要:Pythonは参照カウントとガベージコレクションを組み合わせてメモリを管理し、開発者はツールを使用して参照パイプを最適化できます。

SQLテキスト検索機能 SQLテキスト検索機能 Jul 27, 2025 am 04:01 AM

SQLは、Basic LikeやIlikeオペレーター、フルテキスト検索(フルテキストサーチ)、正規表現(regex)など、さまざまなテキスト検索機能を提供します。 1. ylikeは、基本的なファジーマッチングに使用され、ワイルドカード文字をサポートし、キーワードを含むプレフィックスまたはクエリに適しています。 2。フルテキスト検索は、記事やログなどの大規模なテキストコンテンツの処理に適しています。フルテキストインデックスは、自然言語またはブールパターン検索に適した効率を改善するために必要です。 3.正規表現は、特定の構造からのデータのログ分析、形式の検証、抽出に適した、より柔軟なパターンマッチング関数を提供します。さまざまなデータベースシステムには、これらの機能に対して異なるレベルのサポートがあり、適切なツールを選択するとクエリのパフォーマンスと精度が向上する可能性があります。

アトミックカウンターは例ごとに進みます アトミックカウンターは例ごとに進みます Jul 27, 2025 am 03:27 AM

原子カウンターは、人種の状態を避けるために、複数のゴルチンの値を安全に増加または減少または読み取るために使用されます。 GoのSync/Atomicパッケージは、基礎となる原子動作を提供します。 Atomic.int64(go1.19)やatomic.addint64/loadint64などの関数を使用することをお勧めします。 1. Atomic.int64を使用して、それぞれ100倍の10個のゴルウチンなど、同時の自己増加を安全に達成すると、最終結果は1000です。 2。GOの古いバージョンでは、Atomic.Addint64(&Counter、1)およびAtomic.LoadInt64(&Counter)操作を使用できます。

CSSレスポンシブナブバーの例 CSSレスポンシブナブバーの例 Jul 27, 2025 am 03:59 AM

レスポンシブナビゲーションバーは純粋なCSSを介して実装されており、答えは隠されたチェックボックスとメディアクエリを使用して、モバイル側のメニューの表示動作を制御することです。 1.デスクトップ側は、フレックスレイアウトを介して実装される水平ナビゲーションメニューとして表示されます。 2.モバイル側が768px未満の場合、メニューを非表示にしてハンバーガーアイコンを表示し、ラベルから非表示のチェックボックスをトリガーします。 3.チェックステータスと〜セレクターを使用して、.nav-menuの表示と非表示を制御します。 4.ハンバーガーアイコンをクリックした後、CSS変換を通じてアニメーション効果を実現できます。 5.メニューでは、絶対的な位置決めを使用して、正しいレベルで表示されることを確認します。ソリューション全体にはJavaScriptが必要ありません。CSSに依存するインタラクティブなロジックは、静的なWebサイトに適した完全かつ軽量であり、最終的に

JavaScript innerhtml vs textContent JavaScript innerhtml vs textContent Jul 27, 2025 am 03:57 AM

innerHTMLは、HTMLタグを含むコンテンツを設定または取得するために使用され、タグを解析します。 2。TextContentはプレーンテキストのみを処理し、HTMLを解析しません。 3。TextContentはセキュリティの観点からXSS攻撃を防ぐことができますが、InnerHTMLは危険にさらされています。 4。テキストコンテンントは、パフォーマンスがより速く、より効率的です。 5. HTMLが不要な場合はTextContentを使用し、必要に応じてInnerHTMLのコンテンツフィルタリングを使用することをお勧めします。 6. TextContentはIE8以下では互換性がなく、InnerTextに置き換えることができますが、2つの動作は異なります。最終的な結論:セキュリティとパフォーマンスのために、TextContentが推奨され、TextContentを使用する必要があります。

See all articles