Javaの共通機能インターフェース - 消費者インタフェース

 

JDKは、ラムダ典型的な使用シナリオを豊かにする共通インタフェース機能の数を提供し、それらは主に  java.util.functionパッケージを供給する。以下に、消費者インターフェースの使用の簡単な例です。

消費者インターフェイスの概要

@FunctionalInterface
 パブリック インターフェース消費<T> { 

    / ** 
     *消費動作は、指定されたパラメータに対して行わ。
     * 
     * @Param T入力パラメータ
      * / 
    無効受け入れる(T T); 

    デフォルトの消費者<T> andthen(消費者<?スーパー T> の後){ 
        Objects.requireNonNull(後); 
        リターン(T T) - > {受け入れ(T ); after.accept(T);}; 
    } 
}

 java.util.function.Consumer <T>は、単にとのインタフェースであるサプライヤインタフェース逆に、それが生産データではなく、データコンシューマは、データ型は汎用によって決まります。

 

抽象メソッド:受け入れます

消費者インターフェースが抽象メソッド含むボイド(T tを)受け入れる、消費データは汎用として指定されることを意図しています。次のような基本的な使い方

輸入java.util.function.Consumer; 

パブリック クラスDemo01Consumer {
     公共 静的 ボイドメイン(文字列[]引数){ 
        consumerString(S - > のSystem.out.println(S))。
    } 

    プライベート 静的 無効 consumerString(消費者<文字列> 機能){ 
        function.accept( "こんにちは" ); 
    } 
}

プログラム、コンソール出力を実行します。

こんにちは

もちろん、より良い方法が書かれたリファレンスを使用することです。

 

デフォルトの方法:andThen

メソッドのパラメータや戻り値が全てであれば、その後の消費データ、操作を最初に行うこと、及び組み合わせを達成するために、操作を行います。消費者のタイプ、あなたは効果を実現することができます。そして、このようにあるインターフェースのデフォルトの方法消費者andThen。

デフォルトの消費者<T> andThen(消費者<?スーパー T> の後){ 
    Objects.requireNonNull(後)。
    リターン(TのT) - > {(t)を受け入れます。after.accept(T)。}。
}
注:requireNonNullの静的メソッドのjava.util.Objectsがパラメータでイニシアチブを取るnullがスローされる
 NullPointerExceptionが例外を。これは、if文を書き換える必要性を排除し、nullポインタ例外のトラブルをスローします。

 

組み合わせを達成するために、二つ以上のラムダ式をすることができ、かつandThenセマンティクスが操作「ステップバイステップ」です。例えば2段階の組み合わせの場合:

インポートjava.util.function.Consumer; 

パブリック クラスDemo02Consumer {
     公共 静的 ボイドメイン(文字列[]引数){ 
        consumerString(
                // 大文字に文字列を変換するためのtoUpperCase()メソッド 
                S - > するSystem.out.println(S. toUpperCaseの())、
                 // toLowerCaseメソッド()下げに変換文字列への方法 
                Sを- > のSystem.out.println(s.toLowerCase())
        ); 
    } 

    プライベート 静的 無効 consumerString(消費者<文字列>の一つ、消費者<文字列> TWO){ 
        one.andThen(TWO).accept( "こんにちは" ); 
    } 
}

結果は、まず、ハロー小文字完全に印刷し、実行して完全に大文字のHELLOを印刷します。もちろん、追加の手順は、チェーンの文言の組み合わせによって実現されてもよいです。

ハロー
ハロー

 

演習:フォーマットされた印刷情報

タイトル

そこに情報のうち、文字列の次の配列、フォーマットに従う「名前:. XX:XXのセックス。」フォーマットが情報を出力します。印刷動作は、第1名として必要ラムダ消費者インターフェースのインスタンス、第二の性として印刷動作ラムダ消費者インターフェースインスタンス二一緒に「スプライシングされた」消費者インターフェース順序。

文字列[]配列= { "のび太、M"、 "しずか、女性"、 "パンのHu、M"}。

 

答え

輸入java.util.function.Consumer; 

パブリック クラスDemoPrintInfo {
     公共 静的 ボイドメイン(文字列[]引数){ 
        文字[]配列 = { "大雄、男"、 "静香、女"、 "胖虎、男" }。

        PRINTINFO(
                S - > System.out.print( "姓名:" + s.split( "")[0] + "" )、
                sは - >のSystem.out.println( "性别:" + s.split ""( "")[1] + )、
                配列
        ); 
    } 

    プライベート 静的 無効 PRINTINFO(消費者<文字列> 1、消費者<文字列> 2、
        
            (2).accept(情報)one.andThen。
        } 
    } 
}

プログラム、コンソール出力を実行します。

名前:のび太、性別:男性。
名前:静香、性別:女性。
名前:パン胡、性別:男性。

 

          

おすすめ

転載: www.cnblogs.com/liyihua/p/12286086.html