2016-05-10 14 views
-3

Also habe ich versucht, eine Klasse zu einer ArrayList hinzuzufügen, aber wenn ich es tue, gibt es mir eine Nullzeiger Ausnahme. Ich bin mir sicher, dass ich gerade eine Variable übersehe, von der ich dachte, dass sie initialisiert wurde, aber ich kann es nicht herausfinden.Hinzufügen einer Klasse zu einer ArrayList, aber NullPointerException

Dies ist die Klasse:

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 

}

Dies ist, wo ich die Klasse in der Arraylist hinzuzufügen:

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

Hier ist die Google-Funktion, googelt es, was Sie sagen, es zu und gibt die Seiteninformation zurück:

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

Irgendwelche Ideen?

+2

parsellist ist null –

+0

@Royal Bg Danke! Sie sollten das als Antwort posten, damit ich es genehmigen kann! – Wlliam

+0

@Wlliam haben Sie es praktisch in Ihrem Kommentar angekündigt ... – shmosel

Antwort

-1

Eigentlich ist es kein Problem, null zu einer Sammlung von Objekten hinzuzufügen. Das Abrufen des Objekts und das spätere Aufrufen seiner Mitglieder kann NPE verursachen.

Sie haben gesagt, dass das Problem in der Zeile ist, wo Sie das Objekt hinzufügen. Nur NPE kann add() über null aufgerufen werden. Das ist also deine Sammlung parseList, die noch nicht initialisiert ist. Vielleicht ist es ein Feld in der Klasse und wurde nie auf ein tatsächliches Objekt vom Typ ArrayList initialisiert, aber es wird nur deklariert.

0

In der Zeile, die die Ausnahme auslöst, ist parseList die einzige Variable, die dereferenziert wird. Die einzige andere Variable in dieser Zeile ist page, und es spielt keine Rolle, ob die Seite null ist, weil Sie einer Liste null Elemente hinzufügen können. Also muss parseList die NPE verursachen.

+0

Ja, es ist zu einfach, die einfachen Dinge manchmal zu übersehen – Wlliam

Verwandte Themen