2012-06-20 25 views
0

我只是想知道是否需要在下面的A點對null進行檢查。在那個時候它會永遠是空嗎?或者它只會是空的/非空的?這個數組列表是否可以等於null?

Thx提前尋求幫助!

List myList = new ArrayList(); 
PreparedStatement ps = null; 
ResultSet rs = null; 
String sql ="SELECT * FROM XXXXX"; 

ps = getDBConnection.prepareStatement(sql); 
rs = ps.executeQuery(); 

while (rs.next()) { 
//Add the row to myList using myList.add... 
} 

if (myList != null){ //POINT A 
//Implement some logic 
} 

.. 

回答

3

您的ArrayList只是一個參考。當然,原則上可以指向null。在你的榜樣,但是,你直接將它分配給一個new ArrayList()並沒有什麼之間,改變myList,不,它永遠不能爲null

+0

感謝您的確認!+1 :) – user656523

3

既然你在第一行(List myList = new ArrayList();)創建它,它不能爲空,除非你明確指定空它。

如果你希望它是零,你將不得不做的事:myList = null

此外,當您創建一個對象,該對象仍然可以爲空是,如果構造函數拋出異常:

MyObject obj = null; 
try { 
     obj = new MyObject(); // If an exception is thrown, the assignment is not done 
} 
catch (Exception e) { 
    // Do something 
} 

// Here obj is null if an exception has been thrown 

但是現在你的代碼就是這種情況。

2

您與myList = new ArrayList()初始化myList已經所以它不會是空以後再,除非你做類似myList = null;

此外,它不能爲null,如果您在上面的循環中調用myList.add或者您將得到NullPointerException。所以如果你在任何地方檢查null,它應該在while循環之上。

2

如果你想確保它永遠不會被清零,其聲明如下:

final List myList = new ArrayList(); 

無論哪種方式,它只能是null如果此方法(在聲明之後)的一些代碼,明確分配null

+0

非常好的答案和Miquel接受的答案的一個很好的補充。 – Manuzor

相關問題