IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Les expression lambda en Java8


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2012
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 70
    Par défaut Les expression lambda en Java8
    Bonjour,

    J'aimerais savoir s'il existe des tutoriel en français sur les expression lambda qui sont dans le JDK8,
    j'aimerais savoir si seulement on les trouve dans la syntaxe des méthodes et leurs déclaration, ou même dans la déclaration de
    variable,

    Merci,

  2. #2
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Bonsoir,

    Je ne sais pas à quel point tu souhaites quelque chose d'exhaustif mais il y a quelques ressources sur le sujet sur la plateforme :


    Après je te l'accorde ce que je te propose ne donne qu'un avant goût.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  3. #3
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par the_finisher Voir le message
    Bonjour,

    J'aimerais savoir s'il existe des tutoriel en français sur les expression lambda qui sont dans le JDK8,
    Google est ton ami

    http://soat.developpez.com/tutoriels...-lambda-java8/
    http://blog.developpez.com/mgibert/p...da_expressions
    http://blog.developpez.com/adiguba/p...essions_lambda
    Citation Envoyé par the_finisher Voir le message
    j'aimerais savoir si seulement on les trouve dans la syntaxe des méthodes et leurs déclaration, ou même dans la déclaration de
    variable,

    Merci,
    Rien compris à la question là par contre

  4. #4
    Membre confirmé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2012
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 70
    Par défaut
    Merci pour vos réponse,

    Je voulais demande ou interviennent exactement les expressions lambda, et seront elles vraiment utilisées dans le future proche d'après votre expérience ?

  5. #5
    Membre Expert
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Par défaut
    Citation Envoyé par the_finisher Voir le message
    Merci pour vos réponse,

    Je voulais demande ou interviennent exactement les expressions lambda, et seront elles vraiment utilisées dans le future proche d'après votre expérience ?
    Un exemple classique de l'utilisation des lambda : dans les stream (tu peux appeler directement un consumer sur chaque élément)
    Ou dans les cas où tu dois utiliser des sous-classes comme des listeners, tu peux passer une référence de méthode possédant la même signature sans avoir à déclarer une classe qui ne fait qu'implémenter une méthode (grâce aux interfaces fonctionnelles)...
    Ce qui permet de définir autant de méthodes que tu veux avoir de listeners sans avoir à déclarer autant de classes.

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par the_finisher Voir le message
    Je voulais demande ou interviennent exactement les expressions lambda, et seront elles vraiment utilisées dans le future proche d'après votre expérience ?
    Les expressions lambdas (et les références de méthodes) peuvent remplacer avantageusement une classe anonyme pour les interfaces mono-méthodes.
    Donc elle peuvent être utilisé un peu partout, et pas forcément uniquement avec des API conçu spécialement...


    Je n'ai pas une grosse expérience en Java 8 (je suis bloqué sur du Java 7 pour le moment), mais je ne vois aucune raison à ne pas les utiliser sur un projet Java 8...


    a++

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Voici un petit POC que j'avais fait pour répondre à une question il y a quelques semaines. On voit un exemple de comment les expressions-lambdas peuvent éviter d'avoir à écrire des classes pour faire des choses très similaires mais différentes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    public class DemoDessin extends JPanel {
     
    	private static final Color[] COLORS = {Color.BLUE, Color.GREEN, Color.YELLOW, Color.MAGENTA };
     
    	private Optional<IRenderer> rendererHandler = Optional.empty();
     
    	public DemoDessin() { 
    	}
     
    	public void setRenderer(IRenderer renderer) {
    		this.rendererHandler = Optional.ofNullable(renderer);
    		repaint();
    	}
     
    	@Override
    	protected void paintComponent(Graphics g) {
    		super.paintComponent(g);
    		g.setColor(getForeground());
    		rendererHandler.ifPresent(renderer-> renderer.draw((Graphics2D)g, getWidth(), getHeight()));
    	}
     
    	@FunctionalInterface
    	public static interface IRenderer {
     
    		void draw(Graphics2D g, int width, int height);
     
    	}
     
    	public static void main(String[] args) {
     
    		JFrame frame = new JFrame("Démo");
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    		DemoDessin panel = new DemoDessin();
    		panel.setForeground(Color.ORANGE);
    		panel.setBackground(Color.WHITE);
     
    		frame.add(panel);
     
    		JPanel buttonPanel = new JPanel();
    		frame.add(buttonPanel, BorderLayout.SOUTH);
     
    		final IRenderer drawOval = (g,w,h)->g.fillOval(10,10,w-20,h-20);
    		final IRenderer drawSquare = (g,w,h)->g.fillRect(10,10,w-20,h-20);
    		final IRenderer drawDiamond = (g,w,h)->fillDiamond(g,10,10,w-20,h-20);
     
    		buttonPanel.add(createButton("Cercle", e-> panel.setRenderer(drawOval) ));
    		buttonPanel.add(createButton("Carré", e-> panel.setRenderer(drawSquare) ));
    		buttonPanel.add(createButton("Losange", e-> panel.setRenderer(drawDiamond) ));
    		final AtomicInteger index = new AtomicInteger();
    		buttonPanel.add(createButton("Défiler", e-> panel.setRenderer(getNext(index, drawOval, drawSquare, drawDiamond)) ));
     
     
    		frame.setSize(400, 300);
    		frame.setLocationRelativeTo(null);
    		frame.setVisible(true);
     
    	}
     
    	private static IRenderer getNext(AtomicInteger index, IRenderer...renderers) {
    		int i=index.getAndIncrement();
    		return (g,w,h)-> {
    			g.setColor(COLORS[i%COLORS.length]);
    			renderers[i%renderers.length].draw(g, w, h);
    		};
    	}
     
    	private static void fillDiamond(Graphics2D g, int x, int y, int w, int h) {
    		Polygon polygon = new Polygon(new int[]{x,x+w/2,x+w,x+w/2},
    									  new int[]{y+h/2,y,y+h/2,y+h},
    									  4);
    		g.fill(polygon);
    	}
     
    	private static JButton createButton(String text, ActionListener listener) {
    		JButton button = new JButton(text);
    		button.addActionListener(listener);
    		return button;
    	}
     
    }
    Non seulement j'utilise des lambads pour les actionsListeners, mais j'ai ma propre interface fonctionnelle (IRenderer) pour dessiner des formes différentes.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/02/2015, 16h45
  2. Réponses: 0
    Dernier message: 22/12/2008, 16h25
  3. [langage] Les expressions régulières
    Par BENCHEKROUN dans le forum Langage
    Réponses: 12
    Dernier message: 20/05/2005, 17h22
  4. Bug dans les expressions régulières ?
    Par SergioF dans le forum Linux
    Réponses: 8
    Dernier message: 12/05/2004, 15h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo