ArayList may not have been initialized

Dimax

Top Contributor
Guten Tag,
ich versuche mit foreach einige Elemente hinzufügen, aber es klappt nicht:
Java:
public String listProj(Model model) {
        Iterable<Projekt> projekts ;
        ArrayList<Kunde> kunde ;
        int kundenId;
        Collection<? extends GrantedAuthority> authorities = SecurityContextHolder.getContext()
                .getAuthentication()
                .getAuthorities();
        String userName=SecurityContextHolder.getContext().getAuthentication().getName();
        
        
        boolean authorized = authorities.contains(Role.ADMIN);

        if (authorized) {
            projekts = projektRepository.findAll();
            
            for(Projekt p: projekts) {
                kundenId=p.getKundenId();
                kunde.add(kundeRepo.findByKundenId(kundenId)); /*********An dieser Stelle leuchtet kunde rot mit dem Fehler-"The local variable kunde may not have been initialized****/
            }
            model.addAttribute("users", userRepo.findAll());
            model.addAttribute("context", authorized);
            model.addAttribute("proj", projekts);
        } else {
            model.addAttribute("text", "nicht_erlaubt");
            model.addAttribute("context", authorized);
            kundenId=userRepo.findByUsername(userName).getKundenId();
            projekts= projektRepository.projekt(kundenId);
            
            for(Projekt p: projekts) {
                kunde.add(kundeRepo.findByKundenId(kundenId)); /*********An dieser Stelle leuchtet kunde rot mit dem Fehler-"The local variable kunde may not have been initialized****/
            }
            model.addAttribute("proj", projekts);
        }
        
        return "/listProj";
    }
 
Dann schau einfach einmal, wo du kunde initialisierst.

Du deklarierst die Variable im Zeile 3 aber initialisierst diese nicht. Damit ist die lokale Variable nicht nutzbar, denn eine lokale Variable muss initialisiert werden, ehe auf diese zugegriffen werden kann. (Bei Instanzvariablen wäre diese null und du hättest eine NPE bekommen!)

Die Frage ist, was Du eh. mit kunde machen willst. Du hast eine lokale Variable (nie initialisiert, aber angenommen du ergänzt ein = new ArrayList<>(); -> Du fügst etwas hinzu um dann nichts mehr damit zu machen und die ArrayList damit dem GC zu überlassen.

Edit: Typo korrigiert.
 

Zurück
Oben