2014-09-04 28 views
-1

我已經搜索了這個,我仍然無法找到正確的答案。我試圖從數據庫中取回數據,並將一堆對象添加到ArrayList中。我的IDE告訴我,messages.add(objMessage)行中的objMessage無法解析爲變量。爲什麼當我在我的函數開頭聲明ArrayList消息= null時,它告訴我這一點?獲取Java錯誤無法解析到變量

謝謝!

ArrayList<Message> messages = null; 

    try { 
     sqlConn = ds.getConnection();   
     sqlConnector = new SQLConnector(sqlConn); 
     String sql = "SELECT * FROM table WHERE thing = 1;"; 

     rs = sqlConnector.getData(sql); 

     while(rs.next()) { 
      String stuff = rs.getString("stuff"); 

      if(stuff.toUpperCase().contains(stuff.toUpperCase())) { 
       int id = rs.getInt("id"); 
       String data = rs.getString("data"); 
       Date time = rs.getDate("time"); 
       Message objMessage = new Message(id, time, data); 
      } 

      messages.add(objMessage); 
     } 
     catch(Exception e) { 
    // catch exception 
     } 
+1

你正在將'messages'初始化爲'null' ......至少,實例化應該是:'ArrayList messages = new ArrayList <>();' – Barranka 2014-09-04 23:44:12

回答

2

你的變量objMessage是您if塊的大括號內聲明。它不在該塊之外。假設將你的線路messages.add(objMessage)上移到if區塊將會擺脫那個特定的錯誤。

但是那麼你的messages對象是空的,所以你仍然無法添加任何東西。

+0

是的,謝謝。我不明白爲什麼它一直說空指針,如果我把它放在if語句中,但是當我將它移到if語句之外時,它會產生這個錯誤。忘記我聲明瞭變量並將其設置爲null,並沒有實例化一個新對象。愚蠢的錯誤。謝謝! – 2014-09-05 02:53:31