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 :

lambda problème de portée de variable


Sujet :

Langage Java

  1. #1
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    521
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 521
    Par défaut lambda problème de portée de variable
    Bonjour je veux remplir une Map à partir d'une liste déjà rempli ainsi qu'une autre liste
    mais en lisant quelque tuto je me rend compte que mes variables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Map<UUID,String> fuelcardByVehicleId
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<VehicleDto> fuelCardVehicleDtoList
    ne sont pas visible depuis mon expression lamdda à moins que je les déclare en final ce qui n'est pas possible car je dois les remplir.
    comment puis-je remplir ces deux variable avec mon expression lambda.
    Voici ma fonction
    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
    public List<VehicleDto> getVehicles(boolean isCard) {
        List<Vehicle> vehicles = getVehicle();
        List<VehicleDto> vehicleDtoList = getVehicleDto();
        if(isCard) {
            //liste bien remplie
            List<FuelCard> fuelCards = getFuelCard();
     
     
            Map<UUID,String> fuelcardByVehicleId = new HashMap<>();
            fuelCards.stream().forEach(x ->{
                if(! fuelcardByVehicleId.containsKey(x.getVehicle().getId())){
                    fuelcardByVehicleId.put(x.getVehicle().getId(),x.getPinCode());
                }
            });
     
            List<VehicleDto> fuelCardVehicleDtoList = new ArrayList<>();
                    vehicleDtoList.stream().forEach(v ->{
                        VehicleDto vdto = v;
                        if(fuelcardByVehicleId.containsKey(v.getId())){
                            vdto.setFuelCardPinCode(fuelcardByVehicleId.get(v.getId()));
                        }
                        fuelCardVehicleDtoList.add(vdto);
                    });
     
                    return fuelCardVehicleDtoList;
     
        }
        return vehicleDtoList;
    }
    merci de m'aiguiller si vous avez une idée

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Hello,

    je ne vois aucun problème de ce genre dans ton code, ça compile parfaitement.

    Tu devrais nous montrer le message d'erreur complet.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 326
    Billets dans le blog
    12
    Par défaut
    Bonjour,


    1. Rien ne t'empêche de "remplir une Map à partir d'une liste déjà rempli ainsi qu'une autre liste", même une lambda.
    2. Tu peux déclarer en final tes map ou list, cela ne t'empêchera pas de les remplir, mais de ré-affecter tes map ou list dans le contexte de la lambda (ou classe anonyme).


    Utilise le mot-clé final comme te le suggère ton IDE.
    Ce que tu peux en retenir, c'est que tu ne dois pas "ré-affecter" des objets d'un autre contexte dans une lambda ou une classe anonyme en Java.


    A+
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  4. #4
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    521
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 521
    Par défaut
    Ok Merci,
    effectivement mon code compile bien au boulot mais c'est en lisant un tuto ce matin que j'ai été confus
    et je me suis dis que ce que j'avais écrit causerait peut-être des soucis d'autant que je n'avais encore rien testé en partant hier soir du boulot.
    Cordialement

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

Discussions similaires

  1. Problème de portée de variables (VBS)
    Par befast dans le forum Windows
    Réponses: 0
    Dernier message: 18/09/2007, 09h40
  2. [Mail] problème de portée de variables
    Par xclam dans le forum Langage
    Réponses: 2
    Dernier message: 12/04/2007, 09h35
  3. Problème de Portée de Variable
    Par Julien_C++ dans le forum C++
    Réponses: 7
    Dernier message: 18/09/2006, 10h13
  4. [VBA-E] Problème de portée de variable [débutant]
    Par vivelesgnous dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 01/03/2006, 18h28
  5. [XSL]Problème de portée des variables
    Par djulesp dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 17/09/2004, 10h34

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