将类添加到ArrayList,但得到NullPointerException

时间:2016-05-10 23:53:52

标签: java arraylist nullpointerexception

所以,我试图将一个类添加到ArrayList,但是当我这样做时,它给了我一个空指针异常。我确定我只是忽略了一个我认为已初始化的变量,但我无法弄明白。

这是班级:

enum WebType { GoogleResult, Webpage };
public class Webpage {

WebType type;

String pageName;
String content;
String url;
String MLA = "";

public Webpage(String pageName, String content, String url, WebType type){
    this.type = type;
    this.pageName = pageName;
    this.content = content;
    this.url = url;
    this.MLA = ""; // Temp
}

// TODO: Make Citation Maker

}

这是我将类添加到ArrayList的地方:

    public void Start(){
    for(Integer i = 0; i < tags.size(); i++){
        if(tags.get(i) == null)
            return;
        Webpage page = Google(tags.get(i));
        parseList.add(page); // The Error is on this line!
        log.append("Added " + page.url + " to parse list");
    }
    for(Integer i = 0; i < parseList.size(); i++){
        ParsePageCode(parseList.get(i));
    }
}

这是谷歌的功能,它会搜索你告诉它的任何内容并返回页面信息:

    public Webpage Google(String search){
    String url = "https://www.google.com/search?q=" + search;
    String content = "";
    try {
        URLEncoder.encode(url, "UTF-8");
    } catch (UnsupportedEncodingException e) {
        log.append("\n Unsupported Encoding Contacting Google");
    }
    try {
        content = GetPageCode(url);
    } catch (IOException e) {
        log.append("\n Unable To Reach Google");
        log.append(e.getMessage());
    }
    Webpage w = new Webpage("Google Result For " + search, content, url, WebType.GoogleResult);
    // System.out.println(search + url + WebType.GoogleResult);
    return w;
}

任何想法?

2 个答案:

答案 0 :(得分:0)

在抛出异常的行上,parseList是唯一被解除引用的变量。该行上唯一的另一个变量是page,如果page为null则无关紧要,因为您可以向List添加null元素。因此,它必须是导致NPE的parseList。

答案 1 :(得分:-1)

实际上将null添加到对象集合中没有问题。稍后检索对象并调用其成员可能会导致NPE

您已经告诉过,问题出现在您添加对象的行上。导致NPE的唯一方法是在add()上调用null。因此,您的收藏集parseList尚未初始化。也许它是类中的一个字段,并且从未初始化为ArrayList类型的实际对象,但它只是声明了。