JDK8 (deux) expression lambda

1, Profil Lambda

Les expressions lambda sont Java 8 la plupart des fonctionnalités populaires et couramment utilisés.
Il introduira le concept de la programmation fonctionnelle Java, les avantages de la programmation fonctionnelle est qu'il peut nous aider à économiser beaucoup de code, très facile à utiliser, peut grandement améliorer notre efficacité de codage.

2. Avis

2.1 Interface -> méthode par défaut

Mot - clé par défaut a été modifiée méthode nécessite le corps de la méthode.
Une telle approche toutes les sous - classes implémentation par défaut (ne pas écrire), si vous souhaitez remplacer peut être écrasé dans la classe de mise en œuvre.
le rôle de mot - clé par défaut est utilisé pour étendre.

/**
 * 从java8开始,接口当中允许定义default默认方法
 * 修饰符:public default(public可以省略,default不能省略)
 */
public interface MyInterface {
	void method1();
    void method2();
    // 接口中的一个默认方法
    default void methodNew() {
        System.out.println("接口默认方法执行");
    }
}

2.2 Interface -> méthode statique

par défaut (méthode par défaut), toutes les sous - classes par défaut sera mise en œuvre.
Cependant, les méthodes statiques de la classe d'implémentation d'interface ne seront pas héritées (pour atteindre).

/**
 * 从java8开始,接口当中允许定义静态方法
 * 修饰符:static xxx
  * 一般类的静态方法用法相同
 */
public interface Animal {
    void eat();
	// 接口中的一个静态方法
    static Animal getAnimal() {
        return new Cat();
    }
}

2.3 Fonctions d'interface

Fonction Interface, dans les moyens Java: une et une seule méthode d'interfaces abstraites.
Fonction Interface, une interface qui convient aux scénarios de programmation fonctionnels.
La programmation fonctionnelle en Java se reflète Lambda, de sorte que l'interface de fonction est que vous pouvez appliquer aux interfaces Lambda utilisation.
Les avantages de la programmation fonctionnelle est qu'il peut nous aider à économiser beaucoup de code, très facile à utiliser, peut grandement améliorer notre efficacité de codage.
En veillant à ce que l'interface et une seule méthode abstraite, Java peut être déduit dans le Lambda en douceur.

2.3.1 Fonction format d'interface d'annotation @FunctionalInterface

Format:
à savoir l'interface, et seulement une méthode d'interface abstraite pour.
Par exemple, la méthode run Thread ().

Public interface 接口名称 {
    返回值 方法名称();
}

notes @FunctionalInterface
et quelques annotations sont dans la compilation des travaux, comme commentaire @Override.
@FunctionalInterface notes, travaille également au moment de la compilation.
L'annotation est spécifiquement pour la nouvelle fonction d'interface annotations est introduite, agissant sur une interface.
En utilisant cette annotation pour définir les interfaces, la compilation du temps à vérifier si les conditions forceront les interfaces avec respecte l'interface fonctionnelle, ne répond pas à cela l' erreur.
Remarque:
Même si l'annotation n'est pas utilisé, tant que l'interface de la fonction de définition, qui est une interface de fonction.

3, expressions lambda

3.1, lambda expressions format

Format:
fonction similaire ES6 flèche.

(param1,param2,param3 ...,paramN)-  > { 
 	 //代码块;  
  }

Remarque:

  1. expression lambda est une interface de fonction exprimée;
  2. Flèche vers la gauche, est une fonction de la séparés par des virgules forme de paramètres liste;
  3. Flèche à droite est un corps de la fonction;

Principe omis 3.2, les expressions lambda

1, peut être omis type de paramètre.
Cependant, tout en omettant uniquement le type de tous les paramètres, ou tout simplement pas être omis.
2, si le paramètre de la liste des paramètres, et un seul, on peut omettre les parenthèses.
3, si les déclarations dans les accolades, et un seul, puis, si oui ou non il y a une valeur de retour , retour , des accolades , des points - virgules peuvent être omis

3.3, le texte original

package com.zicheng.lambda;

/**
 * 子诚
 * Description:原始写法
 * 时间:2020/3/30 9:38
 */
public class LambdaDemo {
    //抽象功能接口
    interface Printer {
        void print(String val);
    }

    //通过参数传递功能接口
    public void printSomething(String something, Printer printer) {
        printer.print(something);
    }

    //通过创建对象调用函数
    public static void main(String[] args) {
        LambdaDemo demo = new LambdaDemo();
        String something = "I am learning Lambda";
        //实现Printer接口,内部类的方式
        Printer printer = new Printer() {
            @Override
            public void print(String val) {
                //控制台打印
                System.out.println(val);
            }
        };
        //调用接口打印
        demo.printSomething(something, printer);
    }
}

Insérer ici l'image Description

3.4, les expressions lambda libellé

package com.zicheng.lambda;

/**
 * 子诚
 * Description:
 * 时间:2020/3/30 10:27
 */
public class LambdaDemo2 {
    //抽象功能接口
    interface Printer {
        void print(String val);
    }

    //通过参数传递功能接口
    public void printSomething(String something, Printer printer) {
        printer.print(something);
    }

    //通过创建对象调用函数
    public static void main(String[] args) {
        LambdaDemo2 demo2 = new LambdaDemo2();
        String something = "I am learning Lambda";
        //实现Printer接口,内部类的方式
        Printer printer = (String val) -> {
            //控制台打印
            System.out.println(val);
        };
        //调用接口打印
        demo2.printSomething(something, printer);
    }
}

Insérer ici l'image Description

3.5, 3.4 pour les expressions lambda et optimisation

3.4 Code

 		//实现Printer接口,内部类的方式
        Printer printer = (String val) -> {
            //控制台打印
            System.out.println(val);
        };

paramètre 3.5.1 Type est omis, mais comme un seul paramètre, les parenthèses est omis

		//实现Printer接口,内部类的方式
        Printer printer = val -> {
            //控制台打印
            System.out.println(val);
        };

3.5.2 Puisque le corps de la méthode, une seule instruction, les accolades sont omis

		//实现Printer接口,内部类的方式
        Printer printer = val -> System.out.println(val);
Publié 44 articles originaux · louange gagné 5 · Vues 887

Je suppose que tu aimes

Origine blog.csdn.net/qq_40634246/article/details/105192256
conseillé
Classement