2017-03-02 37 views
0

我正在做一个类来处理使用ArrayList的朋友列表场景,我不知道我做错了什么。在我调用addFriend方法的那一刻,发生了“java.lang.NullPointerException”,我似乎无法排除发生这种情况的原因。请给我一些正确方向的提示!为什么我会得到“java.lang.NullPointerException”w/my 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();  
    } 



} 

回答

0

你的构造具有initialze ArrayList中:

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

在当前的版本中,您分配ArrayList的 “朋友” 本身。这意味着你基本上调用this.frinds = this.friends,并且this.friends尚未初始化,因此NullpointerException。

+0

哇!这使得更有意义。非常感谢!!! – hattic

+0

接受我的awnser会很好;) – Schlangguru

+0

我该怎么做? – hattic

0

在你的构造this.friends = friends; doesn't make sense.作出这样

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

然后通过实际的数组列表来构造。

+0

感谢您的理解! – hattic

0

您需要初始化您的数组列表。像private ArrayList<String> friends = new ArrayList<String>();或在构造函数如下:

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

相关问题