2016-05-10 29 views
-3

クラスをArrayListに追加しようとしましたが、それを実行するとヌルポインタ例外が発生します。私は初期化された変数を見落としていると確信していますが、わかりません。ArrayListにクラスを追加しましたが、NullPointerExceptionが発生しました

これはクラスです:

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

は、Googleの機能である、それはあなたが言うものは何でもグーグルページ情報を返します。

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

パーセルリストがnullです –

+0

@Royal Bgありがとうございました!私はそれを承認することができるように答えとして投稿する必要があります! – Wlliam

+0

@Wlliamあなたのコメントであなたは事実上それを発表しました... – shmosel

答えて

-1

実際には、オブジェクトのコレクションにnullを追加する問題はありません。オブジェクトを取得して後でそのメンバーを呼び出すと、NPEが発生することがあります。

問題は、オブジェクトを追加する行にあるということです。 NPEの原因となる唯一の方法は、nulladd()と呼び出しています。あなたのコレクションparseListはまだ初期化されていません。たぶんそれはクラス内のフィールドで、タイプArrayListの実際のオブジェクトには初期化されませんでしたが、宣言されただけです。

0

例外をスローしている行では、parseListが参照解除される唯一の変数です。その行の他の変数はpageだけです。nullの要素をListに追加できるので、pageがnullかどうかは関係ありません。したがって、NPEを引き起こすparseListである必要があります。

+0

時には簡単なことを見過ごしがちです – Wlliam