这个arraylist可以等于null吗?

时间:2012-06-20 07:48:48

标签: java arraylist null

我只是想知道我是否需要在下面的A点检查空值。那时它会无效吗?或者它只是空/非空?

提前获取任何帮助!

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
}

..

4 个答案:

答案 0 :(得分:3)

由于您是在第一行(List myList = new ArrayList();)创建的,因此除非您明确地为其指定null,否则它不能为空。

如果您希望它为null,则必须执行:myList = null

此外,当您创建一个对象时,如果构造函数抛出异常,该对象仍然可以为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

但现在你的代码就是这种情况。

答案 1 :(得分:3)

您的ArrayList只是一个参考。当然,它原则上可以指向null。但是,在您的示例中,您直接将其分配给new ArrayList()并且之间没有任何更改myList,因此,不,它永远不会为空

答案 2 :(得分:2)

您已使用myList初始化myList = new ArrayList(),因此除非您执行myList = null;

之类的操作,否则它将不再为空

此外,如果您在其上方的循环中调用myList.add,则它不能为空,否则您将获得NullPointerException。因此,如果你在任何地方检查null,它应该在while循环之上。

答案 3 :(得分:2)

如果你想确保它永远不会被取消,请声明如下:

    final List myList = new ArrayList();

无论哪种方式,如果此方法中的某些代码(在声明之后)明确地为其分配null,则它只能是null