Java Supplier概要C#開発者


Supplierを見たいです.
15~20分間、ソースコードを確認し、サンプルを検索しても、Supplierの使用状況を特定できません.
まず、仕入先の会社の意味から検索を開始し、「仕入先」であることを発見します.
インタフェースのコンポーネントが見える場合、get()だけが空です.

特定のタイプで無条件に値を返すget()関数を提供します.
基本的な例を実現するのは難しくないが、その用途はまったく感じられない.
だから舗装して歩くと….この文章は抜け穴だらけになる可能性が高いが、すでに始まっている以上、書き始めることにした.
まずjavaストリームからsupplierを呼び出す関数を検索して検索しました.
public Optional<T> or(Supplier<? extends Optional<? extends T>> supplier)
public T orElseGet(Supplier<? extends T> supplier) 
public <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) throws X 
この3つの方法では,通常パラメータとして用いられ,ほぼ類推される.
orでは、データがない場合は、デフォルト値を受け入れ、仕入先のget()コードに渡します.
ORElseGetとORElseThrowの両方の方法の使用は、計算中に空の値または値がない場合にデフォルトのプロバイダの値を超えることを理解しています.
理解が正しい場合はnull条件または例外が発生したときにデフォルト値を指定するインタフェースとして理解し、その理解に基づいてサンプルコードを記述します.
例1
Supplier<String> supplier = () -> "not found data";
System.out.println(supplier.get());
「not fund data」というメッセージ関数を作成し、get()を呼び出してメッセージをそのまま出力します.
例2
    public static void main(String[] args) {
        Supplier<String> supplier = () -> "not found data";
        
        List<String> list1 = Arrays.asList("a", "b", "c", "d", "e", "f");
        List<String> list2 = Arrays.asList();

        String findChar1 = list1.stream().findAny().orElseGet(supplier);
        String findChar2 = list2.stream().findFirst().orElseGet(supplier);
        System.out.println(findChar1);
        System.out.println(findChar2);
    }
例1)で作成したメッセージを変数として保持します.
まずlistを2つリストします.
1番リストからデータを検索し、orElseGetメソッドを呼び出します.
2番目のリストにデータがない場所でorElseGetメソッドを呼び出してデータを検索する例.
結果は次のとおりです.

データがある場合、見つかった最初のデータ「a」が出力されます.
データのないリストは、仕入先に渡されたデータ「not found data」を出力します.
以下のコードをc#コードとして大まかに考慮して実装します.
いずれにしても、nullチェックをコードの間で自由に行えるc#コード...本当に羨ましい
    class Program
    {
        public delegate bool Test(int i);

        static void Main(string[] args)
        {
            List<string> list1 = new List<string> { "a", "b", "c", "d", "e"};
            List<string> list2 = new List<string>();

            var result1 = list1.FirstOrDefault() ?? "not found";
            var result2 = list2.FirstOrDefault() ?? "not found";
            System.Console.WriteLine(result1);
            System.Console.WriteLine(result2);
        }
    }
サプライヤーのような代表を発表する必要もありません...必要に応じてnull検査を連続的に行うことができ、状況に応じてタイプ変換を行うことができ、コードの糖分はもっと多いですか?より柔軟な姿を見せる
まず、Javaの文法を学ぶのが基礎で、c#コードに比べて、理解が早いと思って、だから比較的に速くて、これは学習方法で、だから方法がなくて、今javaを学ぶ2-3日目で、言語に対する理解度は低くて、表現の間違いかもしれなくて、参考にしてください.
今日のサプライヤーはここまでです.