我只是想知道我是否需要在下面的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
}
..
答案 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
。