Sự khác biệt chính là Collections.emptyList()
trả về một danh sách không thay đổi, tức là danh sách mà bạn không thể thêm thành phần.
Trong trường hợp hiếm hoi trong đó bạn làm muốn sửa đổi danh sách được trả về, do đó, đây không phải là tùy chọn.
Tôi muốn nói rằng việc trả lại danh sách không thay đổi là hoàn toàn tốt (và thậm chí là cách ưa thích) miễn là hợp đồng (tài liệu) không nói rõ một cách rõ ràng.
Bên cạnh đó, emptyList()
might not create a new object with each call.
Triển khai các phương pháp này không cần phải tạo ra một đối tượng Danh sách riêng biệt cho mỗi cuộc gọi. Sử dụng phương pháp này có khả năng có chi phí so sánh để sử dụng trường được đặt tên tương tự. (Khác với phương pháp này, lĩnh vực này không cung cấp loại an toàn.)
Việc thực hiện emptyList
trông như sau:
public static final <T> List<T> emptyList() {
return (List<T>) EMPTY_LIST;
}
Vì vậy, nếu phương pháp của bạn (mà trả về một danh sách trống) được gọi là rất thường xuyên , cách tiếp cận này thậm chí có thể cung cấp cho bạn hiệu suất tốt hơn một chút cả CPU và bộ nhớ khôn ngoan.
Vì vậy, 'Collections.emptyList()' có phù hợp hơn để nói, kiểm tra lỗi và tương tự không? – mre
Vâng, tôi sẽ nói như vậy. – aioobe
Các máy khách API sẽ không nhận được 'NullPointerException' bằng cách trả về' Collections.emptyList() 'thay vì' null'. – realPK