2012-04-16 82 views
0

我有兩個不同的環境中運行以下代碼。第一個環境是Eclipse中的開發環境,Java 7使用Java 6來運行我的webapp。另一個是我的開發服務器運行Java 6.以下代碼在開發服務器上拋出NullPointerException,但不在我的開發環境中。有人可以解釋爲什麼會這樣嗎?迭代null時發生NullPointerException ArrayList

List<String> list = null; 
for(String s : list) 
{ 
// do something 
} 
+0

畢竟是什麼使用這個語句'列表 list = null;'?這完全沒用。 – Lion 2012-04-16 19:38:35

+0

@Lion它只是一個例子,在我的代碼中當然不是這樣,我只知道在我的代碼中,那個變量是空的。 – newbie 2012-04-16 19:39:50

+0

當您嘗試在兩個環境中向「List」(通過不保留null)添加一些值時會發生什麼情況。它們對兩者都有效嗎? – Lion 2012-04-16 19:43:50

回答

1

這將始終引發異常。更可能的情況是某個環境中的某些內容失敗,並且該值爲null,並且在另一個不爲null的環境中不失敗。

+0

對不起,它不是實際上是空的,但這是正確的答案。 – newbie 2012-04-19 08:39:46

0

你在開玩笑嗎?這將每次保證爆炸。

如果「在其他地方運行時不爆炸」,我保證你沒有運行這個代碼。

3

所寫的代碼每次都會引發異常。確保代碼在您的開發環境中正確編譯。如果它成功運行,它將運行不同版本的代碼(可能是不會拋出NullPointerException的較舊版本的類)。

相關問題