Dieser Artikel vermittelt Ihnen relevantes Wissen über Java, das hauptsächlich Probleme im Zusammenhang mit Lambda-Ausdrücken vorstellt. Lambda-Ausdrücke sind eine neue Syntaxform nach dem Start von JDK8, die den Code anonymer innerer Klassen vereinfachen kann Ich hoffe, dass es für alle hilfreich sein wird.
Recommended Learning: "java Video Tutorial"
lambda Ausdruck ist eine neue Syntaxform nach Beginn von JDK8
function: Implify den Code der anonymen inneren Klassen Schreibmethode
Format:
(匿名内部类被重写方法的形参列表)->{ 被重写方法的方法体代码 } 注:->是语法形式,无实际意义
Zuerst definieren wir eine abstrakte Klasse, schreiben ihre Methode durch eine anonyme innere Klasse neu, vereinfachen sie dann und vergleichen die Änderungen zwischen den beiden:
Lambda-Ausdruck verwenden Vorher:
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(); }
Nach der Verwendung des Lambda-Ausdrucks:
People p = ()->{ System.out.println("小学生跑的很慢"); }; //会出现报错
Es wird ein Fehler angezeigt. Der Grund dafür ist, dass die vorherige Definition des Lambda-Ausdrucks nicht alle anonymen inneren Klassen vereinfachen kann. Sie kann nur die Schreibform anonymer innerer Klassen in der Schnittstelle vereinfachen Normalerweise fügen wir der Schnittstelle eine @Functionalinterface-Annotation hinzu, um zu markieren, dass die Schnittstelle die funktionale Schnittstelle erfüllen muss. Wirklich vereinfacht durch den Lambda-Ausdruck:
@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,因此可以可以直接将其代入
Vorteile von Lambda:
Lambda ist eine anonyme Funktion Verstehen Sie den Lambda-Ausdruck als einen Code, der weitergegeben werden kann. Da er ein kompakterer Codestil ist, wurde die Ausdrucksfähigkeit der Java-Sprache verbessert.
Die praktische Rolle von Lambda Im vorherigen Lernprozess haben wir das relevante Wissen über Arrays gelernt. Es gibt eine Sortiermethode (die das Array in aufsteigender oder absteigender Reihenfolge sortieren kann). hat nur eine Abstraktion. Methode:
//精简之前: 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("我是简单的例子。") );
Das obige ist der detaillierte Inhalt vonSo verstehen Sie Lambda-Ausdrücke in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!