[JAVA] Introduction au style lambda

Pourquoi utiliser l'expression lambda?

Java, qui est utilisé pour le développement à grande échelle, est nécessaire pour réduire autant que possible la quantité de code et le rendre plus facile à lire. L '"expression lambda" utilisée dans Java 8 est utile pour de telles occasions. Une caractéristique des expressions lambda est que vous pouvez traiter les méthodes comme des variables.

Comment écrire:

[Déclaration d'interface]= (argument)->{Bloc d'exécution}

Vérifions à partir du code source à la fois. Tout d'abord, l'expression traditionnelle:


public class LambdaTest {

    public static void main(String[] args) {
        //Expression traditionnelle
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("threading" + Thread.currentThread().getId());
            }
        }).start();
    }
}

Ce qui suit est une représentation de l'expression Lambda.


public class LambdaTest {

    public static void main(String[] args) {
        //Expression Lambda
        new Thread(() -> {
            System.out.println("Lambda threading" + Thread.currentThread().getId());
        }).start();
    }
}

Interface fonctionnelle Java

L'interface fonctionnelle de Java est presque la même qu'une interface traditionnelle, mais la seule caractéristique est que l'interface fonctionnelle est "une interface avec une seule méthode abstraite définie". Peu importe si des méthodes statiques ou des méthodes par défaut sont incluses. (C'est une bonne idée d'ajouter l'annotation java.lang.FunctionalInterface).

Veuillez vous référer à l'introduction détaillée de l'interface de la fonction Java. https://qiita.com/Jenny1025/items/470e304ff77c44874fc8

Exemple:

@FunctionalInterface
public interface UserIdentify {
    String verifyUser(String userName);
}

Avantages de la formule Lambda

L'avantage de l'expression Lambda de Java est qu'elle peut simplifier la description des interfaces fonctionnelles à l'aide de classes anonymes.

Classe anonyme:

public class App 
{
    public static void main( String[] args ) {

        //Interface fonctionnelle
        UserIdentify ic = new UserIdentify() {
            @Override
            public String verifyUser(String userName) {
                return "admin".equals(userName)? "admin":"member";
            }
        };

        System.out.println(ic.verifyUser("admin"));
        System.out.println(ic.verifyUser("manager"));
        }
    }

Alors, comment l'exprimez-vous dans la formule Lambda?

public class App {
    public static void main( String[] args ) {
        
        UserIdentify ic1 = (String userName) -> {
                return "admin".equals(userName)? "admin":"member";
            };
        System.out.println(ic1.verifyUser("admin"));
        System.out.println(ic1.verifyUser("manager"));
        }
    }

Plus précisément, explication de la façon d'écrire une expression lambda

  1. Déclaration: type d'interface de style Lambda
  2. Argument: entrez (). Identique au nombre et à l'ordre des arguments d'interface
  3. Expression: ->
  4. Bloc d'exécution: implémenter dans {}

Commençons par un exemple concret.

Aucun argument, aucune valeur de retour

public class App {
    public static void main( String[] args ) {

        //Aucun argument, aucune valeur de retour
        Lambda1 lambda1 = () -> System.out.println("Hello world");
        lambda1.test();
    }
    interface Lambda1 {
        void test();
    }
}

Résultat de la mise en œuvre: Hello world

Avec argument, pas de valeur de retour

public class App {
    public static void main( String[] args ) {

        //Avec argument, pas de valeur de retour
        Lambda2 lambda2 = (n, a) -> System.out.println(n + " is " + a + " years old");
        lambda2.test("Sally",18);
    }
    interface Lambda2 {
        void test(String name, Integer age);
    }
}

Résultat de la mise en œuvre: Sally a 18 ans

Avec argument, avec valeur de retour

public class App {
    public static void main( String[] args ) {

        //Avec argument, avec valeur de retour
        Lambda3 lambda3 = (a, b) -> a + b;
        System.out.println(lambda3.test(100,3000));
    }
    interface Lambda3 {
        int test(int a, int b);
    }
}

Résultat d'exécution: 3100

Recommended Posts

Introduction au style lambda
[Java] Introduction à l'expression lambda
[Introduction à Java] À propos des expressions lambda
Introduction à Ruby 2
Introduction à web3j
Introduction à Micronaut 1 ~ Introduction ~
[Java] Introduction à Java
Introduction à la migration
[Java] Expression Lambda
Introduction à Java
Introduction à Doma
Expression lambda Java
Transformer d'une classe normale en un style lambda
Introduction aux fichiers JAR
Introduction à Ratpack (8) - Session
expression 1 de la table lambda neutre java
Introduction à l'arithmétique des bits
Introduction à Ratpack (9) --Thymeleaf
Variations d'expressions lambda Java
Introduction à la mise en page Android
Introduction aux modèles de conception (introduction)
Comment utiliser l'API Java avec des expressions lambda
Introduction à la programmation pratique
Introduction à la commande javadoc
Fonctionnalité d'expression lambda Java 8
mémo d'expression java lambda
Introduction à la commande jar
Introduction à Ratpack (2) -Architecture
Java 8 pour démarrer maintenant ~ for Each et expression lambda ~
expression lambda java [écriture de notes]
Etudier Java 8 (expression lambda)
Introduction à la commande java
Évaluer java8 ~ Type Lambda ~
Expression lambda Java à nouveau
Introduction au développement de Keycloak
Introduction à la commande javac
Introduction aux modèles de conception (Builder)
[Java] Interface fonctionnelle / expression lambda
Introduction au développement d'applications Android
Introduction à Ratpack (5) --Json & Registry
Introduction à la métabase ~ Construction de l'environnement ~
Introduction à Ratpack (7) --Guice & Spring
Introduction aux modèles de conception (composite)
Introduction à Micronaut 2 ~ Test unitaire ~
Introduction à JUnit (note d'étude)
Flux Java8, résumé de l'expression lambda
Introduction à Spring Boot ① ~ DI ~
Introduction aux modèles de conception (poids mouche)
Introduction à Spring Boot ② ~ AOP ~
Qu'est-ce qu'une expression lambda?
Introduction à Apache Beam (2) ~ ParDo ~
Introduction à l'API EHRbase 2-REST
Introduction au prototype de modèles de conception