Khi không có hàng, cả query.list() và criteria.list() đều trả về danh sách trống thay vì giá trị null. Lý do đằng sau điều này là gì?phương thức query.list() hibernate trả về danh sách trống thay vì giá trị rỗng
Trả lời
Lý do không phải là bắt buộc kiểm tra null trong mã máy khách, nhất quán với Effective Java 2nd Edition, mục 43: Trả lại mảng hoặc bộ sưu tập trống, không phải là rỗng.
Điều này làm cho mã máy khách đơn giản hơn và ít bị lỗi hơn (và rất có thể là việc triển khai phương pháp).
Thành ngữ trả về rỗng có khả năng là lưu giữ từ ngôn ngữ lập trình C, trong độ dài mảng được trả lại riêng biệt với mảng thực tế. Trong C, không có lợi thế để phân bổ một mảng nếu số không được trả về dưới dạng độ dài.
hmm ... nhưng ngay cả khi nó đang ngăn chặn kiểm tra null, chúng tôi vẫn phải kiểm tra kích thước của danh sách ... phải không? và cũng như là một thực hành tốt, chúng tôi luôn luôn kiểm tra cho null cũng (ít nhất là trong nhóm của chúng tôi). – Reddy
Đó là vấn đề - nếu bạn chắc chắn (dựa trên lời hứa của một API) rằng một giá trị không thể là rỗng, thì bạn không kiểm tra giá trị rỗng. Và không, bạn không cần phải kiểm tra kích thước. Khi bạn lặp lại bộ sưu tập, nó sẽ bỏ qua bước lặp. – Bozho
okay ... hiểu rồi. Nếu nó là một null và như tôi khách hàng nếu tôi đã không kiểm tra nó, NPE có thể mang xuống ứng dụng của tôi. Nhưng nếu nó là một bộ sưu tập trống, nó sẽ chỉ bỏ qua logic và tiếp tục (như chúng ta thường kiểm tra kích thước anyways). Cảm ơn Peter và Bozho. – Reddy
Đó là sự thống nhất: danh sách được trả về với tất cả các kết quả, cho dù có bất kỳ kết quả nào hay không.
- 1. lấy phương thức hashmap không trả về giá trị rỗng
- 2. Woocommerce đang trả về danh sách mảng trống trong khi tìm nạp phương thức giao hàng
- 3. Tại sao SUM (...) trên một bản ghi trống rỗng trả về NULL thay vì 0?
- 4. ElementTree findall() trả về danh sách trống
- 5. val() trả về giá trị giữ chỗ thay vì giá trị thực tế trong IE8,9 khi trường trống
- 6. Không nên Rails phương thức find_by_ trả về một mảng trống thay vì nil?
- 7. GetTemplateChild luôn trả về giá trị rỗng
- 8. Biểu thức bậc ba với "được xác định?" trả về "biểu thức" thay vì giá trị?
- 9. Hibernate Trả lại giá trị số nguyên
- 10. os.getenv trả về Không thay vì giá trị chính xác
- 11. Sắp xếp các giá trị rỗng thay vì đầu tiên
- 12. Trả về các danh sách trống theo mặc định với Rhino Mocks
- 13. Phương thức GetProperties System.Reflection không trả về giá trị
- 14. Trả về hai và nhiều giá trị từ phương thức
- 15. Sử dụng giá trị trả về của phương thức baseclass?
- 16. Phương thức quá tải các giá trị trả về
- 17. Trả về IQueryable trống như khi nào Rỗng?
- 18. Cách trả về giá trị bằng phương pháp ẩn danh?
- 19. Tại sao Entity Framework trả về null List <> thay vì rỗng?
- 20. ServletFileUpload # parseRequest (yêu cầu) trả về một danh sách trống
- 21. Tại sao phân biệt giữa các phương thức trả về giá trị và phương thức không trả về?
- 22. EKEventStore nhận sự kiện trả về danh sách trống
- 23. Có thể Hibernate Custom query trả về một Map thay vì một List không?
- 24. So sánh NaN và trả về rỗng illogic giá trị
- 25. Có thể WebResponse.GetResponseStream() trả về giá trị rỗng không?
- 26. Đánh giá nếu danh sách rỗng JSTL
- 27. Danh sách có các mục trả về trống
- 28. HttpServletRequest # getParts() trả về một danh sách trống
- 29. Có hợp lệ cho danh sách Hibernate() để trả về các bản sao không?
- 30. Python lambda trở về None thay vì chuỗi rỗng
tại sao bạn muốn null? Tôi hiểu khi bạn truy vấn cho một kết quả duy nhất - không tìm thấy sẽ có ý nghĩa để trả về null. Nhưng danh sách() phải luôn trả về một danh sách trống! Ý nghĩa của một danh sách rỗng là gì? – ACV