hibernate query.list()方法返回空列表而不是空值

Red*_*ddy 48 java collections hibernate return-value nullpointerexception

当没有行时,query.list()和criteria.list()都返回空列表而不是空值.这背后的原因是什么?

Pét*_*rök 93

原因是不要在客户端代码中强制进行空值检查,与Effective Java 2nd Edition的一致性,第43项:返回空数组或集合,而不是空值.

这使得客户端代码更简单,更不容易出错(并且很可能也是方法实现).

空返回惯用语很可能是C编程语言的延续,其中数组长度与实际数组分开返回.在C中,如果返回零作为长度,则分配数组没有任何优势.

  • 这就是重点 - 如果您确定(基于API的承诺)值不能为null,那么您不检查null.不,你不需要检查大小.迭代集合时,它将跳过迭代. (12认同)

Sjo*_*erd 11

它是一致的:返回包含所有结果的列表,无论是否有.