Heim > Java > javaLernprogramm > So verstehen Sie Lambda-Ausdrücke in Java

So verstehen Sie Lambda-Ausdrücke in Java

WBOY
Freigeben: 2022-06-02 21:10:24
nach vorne
2138 Leute haben es durchsucht

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.

So verstehen Sie Lambda-Ausdrücke in Java

Recommended Learning: "java Video Tutorial"

lambda Übersicht

lambda Ausdruck ist eine neue Syntaxform nach Beginn von JDK8

function: Implify den Code der anonymen inneren Klassen Schreibmethode

Format:

(匿名内部类被重写方法的形参列表)->{
    被重写方法的方法体代码
}
注:->是语法形式,无实际意义
Nach dem Login kopieren

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 dem Login kopieren

Nach der Verwendung des Lambda-Ausdrucks:

People p = ()->{
    System.out.println("小学生跑的很慢");
};
//会出现报错
Nach dem Login kopieren

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("小学生跑的很慢!");
};
Nach dem Login kopieren
Darüber hinaus können Sie ihn auch als Parameter in die Methode einsetzen:
//在原来的基础上定义一个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,因此可以可以直接将其代入
Nach dem Login kopieren

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;
});
Nach dem Login kopieren

Lambda-Ausdrucksauslassungsregeln

Der Parametertyp kann weggelassen werden, ohne zu schreiben

//参考前面的实战例子
Arrays.sort(grade,(Integer o1,Integer o2) -> {
        return o2 -o1;
});
//省略参数类型之后
Arrays.sort(grade,( o1, o2){
        return o2 -o1;
});
Nach dem Login kopieren
  • Wenn es nur einen Parameter gibt, kann der Parametertyp weggelassen werden, und () kann auch weggelassen werden weggelassen
//简单引用一个单个参数的例子,不需要了解其具体含义
btn.addActionListener((ActionEvent e) -> {
    System.out.println("我是简单的例子。");
});
//简化之后:
btn.addActionListener( e -> {
    System.out.println("我是简单的例子。");
});
Nach dem Login kopieren
  • Wenn der Lambda-Ausdruck Der Methodenkörpercode nur eine Codezeile enthält. Sie können die geschweiften Klammern und das Semikolon
//参照上一条规则的例子
btn.addActionListener( e -> {
    System.out.println("我是简单的例子。");
});
//简化之后:
btn.addActionListener( e -> System.out.println("我是简单的例子。") );
Nach dem Login kopieren
  • weglassen, wenn der Methodenkörpercode des Lambda-Ausdrucks nur eine Codezeile enthält. Die geschweiften Klammern können Sie weglassen. Wenn es sich bei dieser Codezeile um eine Return-Anweisung handelt, muss return weggelassen werden und „;“ muss ebenfalls weggelassen werden

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!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage