2017-03-02 7 views
0

Ich mache eine Klasse, um mit einem Friend-List-Szenario mit einer ArrayList umzugehen und ich bin mir nicht sicher, was ich falsch gemacht habe. Die "java.lang.NullPointerException" trat in dem Moment auf, als ich die addFriend-Methode anrief, und ich kann scheinbar nicht genau herausfinden, warum das so ist. Bitte gib mir ein paar Hinweise in die richtige Richtung!Warum erhalte ich "java.lang.NullPointerException" mit meiner ArrayList?

public class Person { 
    private String name; 
    private ArrayList<String> friends; 


    public Person(String name) { 
     this.name = name; 
     this.friends = friends; 
    } 

    public String getName() { 
     return this.name; 
    } 

    public void addFriend(String friend) { 
     friends.add(friend);  
    } 

    public boolean hasFriend(String name) { 
     for(String friend : this.friends) { 
      if(name.equals(friend)) { 
       return true; 
      } 
     } 
    return false; 
    } 

    public String getFriends() { 
     String stringOfFriends=friends.toString(); 
     return stringOfFriends; 
    } 

    public String unfriend(String friend) { 
     if (friends.contains(friend)) { 
      friends.remove(friend); 
     } 
    return friends.toString();  
    } 



} 

Antwort

0

Ihr Constructor hat die Arraylist initialze:

public Person(String name) { 
    this.name = name; 
    this.friends = new ArrayList<String>(); 
} 

In der aktuellen Version, können Sie die Arraylist "Freunde" zu sich selbst zuweisen. Das heißt, Sie rufen im Grunde this.frinds = this.friends und this.friends ist noch nicht initialisiert und daher die NullpointerException.

+0

Wow !!! das macht viel mehr Sinn. vielen Dank!!! – hattic

+0

Akzeptieren meiner Awnser wäre nett;) – Schlangguru

+0

Wie mache ich das? – hattic

0

In Ihrem Konstruktor this.friends = friends; doesn't make sense. Stellen wie diese

public Person(String name,ArrayList<String> friends) { 
    this.name = name; 
    this.friends = friends; 
} 

dann die eigentliche Arraylist an den Konstruktor übergeben.

+0

danke für das Verständnis! – hattic

0

Sie müssen Ihre Array-Liste initialisieren. Wie private ArrayList<String> friends = new ArrayList<String>(); oder im Konstruktor wie folgt:

public Person(String name) { this.name = name; this.friends = new ArrayList<String>(); }

Verwandte Themen