この記事では、java に関する関連知識を提供します。主にラムダ式に関連する問題を紹介します。ラムダ式は、JDK8 の開始後の新しい構文形式であり、匿名内部クラスのコード作成を簡素化できます。 . 見てみましょう。皆さんの参考になれば幸いです。
Java ビデオ チュートリアル」 #Lambda の概要
##関数:
匿名内部クラスのコード記述を簡素化します #形式:
(匿名内部类被重写方法的形参列表)->{ 被重写方法的方法体代码 } 注:->是语法形式,无实际意义
最初に抽象クラスを定義し、匿名の内部クラスを介してそのメソッドを書き直してから、それを単純化し、2 つの変更点を比較します。
ラムダ式使用前:
public static void main (String[] args){ People p = new People(){ @Override public void run(){ System.out.println("小学生跑的很慢"); } }; p.run(); } abstract class People{ public abstract void run(); }
ラムダ式使用後:
People p = ()->{ System.out.println("小学生跑的很慢"); }; //会出现报错
エラーが表示されますが、これはなぜですか?その理由は、ラムダ式の以前の定義が明確ではないためです。ラムダ式は、すべての匿名内部クラスを簡素化することはできません。 関数型インターフェイスの匿名内部クラスの記述形式を簡素化できるだけであり、それは 1 つだけです。は抽象メソッド
です。通常、インターフェイスに @Functionalinterface アノテーションを追加して、インターフェイスが関数インターフェイスを満たす必要があることをマークします。 ラムダ式によって非常に簡素化されました:
@FunctionalInterface//加上这个注解必须是函数式接口,且只有一个抽象方法 interface People{ void run(); } //简化之前的匿名内部类 People p = new People(){ @Override public void run(){ System.out.println("小学生跑的很慢!"); } }; //简化之后 People p = () -> { System.out.println("小学生跑的很慢!"); };
さらに、使用するメソッドに パラメータとして代入することもできます:
//在原来的基础上定义一个pk方法 public static void pk(People p){ System.out.println("跑步情况如何:") p.run(); } //不使用Lambda的情况下: pk(p);//需要在定义匿名内部类之后,将p代入; //使用Lambda的情况: People p = () -> { System.out.println("小学生跑的很慢!"); }; pk(() -> { System.out.println("小学生跑的很慢!"); }); //由于等号右边即是People创建的对象p,因此可以可以直接将其代入
Lambda の利点:
Lambda は匿名関数であり、Lambda 式を渡すことができるコードの一部として理解でき、さらに多くの内容を記述できます。より簡潔で柔軟なコードは、よりコンパクトなコーディングスタイルとして、Java 言語の表現能力を向上させます。
Lambda の実際的な役割 これまでの学習プロセスでは、配列を昇順または降順に並べ替えるソート方法など、配列に関する関連知識を学習しました。 )、実際にはインターフェイス クラスであり、抽象メソッドが 1 つだけあります:
//精简之前: Arrays.sort(grade,new Comparator<Integer>(){ @Override public int compare(Integer o1,Integer o2){ return o2 -o1; } }); //精简之后: Arrays.sort(grade,(Integer o1,Integer o2) -> { return o2 -o1; });
//参考前面的实战例子 Arrays.sort(grade,(Integer o1,Integer o2) -> { return o2 -o1; }); //省略参数类型之后 Arrays.sort(grade,( o1, o2){ return o2 -o1; });
//简单引用一个单个参数的例子,不需要了解其具体含义 btn.addActionListener((ActionEvent e) -> { System.out.println("我是简单的例子。"); }); //简化之后: btn.addActionListener( e -> { System.out.println("我是简单的例子。"); });
//参照上一条规则的例子 btn.addActionListener( e -> { System.out.println("我是简单的例子。"); }); //简化之后: btn.addActionListener( e -> System.out.println("我是简单的例子。") );
以上がJava のラムダ式を理解する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。