所以,我试图将一个类添加到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;
}
任何想法?
答案 0 :(得分:0)
在抛出异常的行上,parseList是唯一被解除引用的变量。该行上唯一的另一个变量是page,如果page为null则无关紧要,因为您可以向List添加null元素。因此,它必须是导致NPE的parseList。
答案 1 :(得分:-1)
实际上将null
添加到对象集合中没有问题。稍后检索对象并调用其成员可能会导致NPE
。
您已经告诉过,问题出现在您添加对象的行上。导致NPE
的唯一方法是在add()
上调用null
。因此,您的收藏集parseList
尚未初始化。也许它是类中的一个字段,并且从未初始化为ArrayList
类型的实际对象,但它只是声明了。