0

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

提前谢谢您的帮助!

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

4 回答 4

3

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

于 2012-06-20T07:51:11.630 回答
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

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

于 2012-06-20T07:51:02.557 回答
2

如果您想确保它永远不会为空,请像这样声明它:

    final List myList = new ArrayList();

无论哪种方式,只有null当此方法中的某些代码(在声明之后)显式分配 anull给它时才可能。

于 2012-06-20T08:02:18.343 回答
2

您已经初始化myListmyList = new ArrayList()因此它不会再为空,除非您执行类似的操作myList = null;

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

于 2012-06-20T07:54:32.470 回答