为什么我得到" java.lang.NullPointerException"我的ArrayList?

时间:2017-03-02 07:36:36

标签: arraylist nullpointerexception

我正在使用ArrayList处理朋友列表场景,我不确定我做错了什么。 " java.lang.NullPointerException"发生在我调用addFriend方法的那一刻,我似乎无法解决为什么会发生这种情况。请给我一些正确方向的提示!

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();    
    }



}

3 个答案:

答案 0 :(得分:0)

您的构造函数必须初始化Arraylist:

$query = "SELECT title,time_strt,ampmstrt,time_end,ampmend
          FROM addfunction
          WHERE (NOW() + INTERVAL 15 MINUTE) BETWEEN time_strt AND time_end AND location = 'MAWAR ROOM'";

在您当前的版本中,您分配了ArrayList&#34; friends&#34;对自己。这意味着你基本上调用public Person(String name) { this.name = name; this.friends = new ArrayList<String>(); } 并且this.friends尚未初始化,因此NullpointerException。

答案 1 :(得分:0)

在构造函数中this.friends = friends; doesn't make sense.像这样制作

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

然后将实际的arraylist传递给构造函数。

答案 2 :(得分:0)

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

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