Tất nhiên, mọi người sẽ làm những gì họ muốn. Nhưng chúng tôi đã có ý định rõ ràng khi thêm tính năng này và nó là không phải là là một mục đích chung Có thể hoặc một số loại, nhiều như mọi người muốn chúng tôi làm như vậy. Mục đích của chúng tôi là cung cấp một cơ chế hạn chế cho các kiểu trả về phương thức thư viện khi cần có cách rõ ràng để đại diện cho "không có kết quả" và sử dụng null
vì vậy có khả năng gây ra lỗi.
Ví dụ: có thể bạn không bao giờ nên sử dụng nó cho thứ gì đó trả về một loạt kết quả hoặc danh sách kết quả; thay vào đó trả về một mảng hoặc danh sách trống. Bạn hầu như không bao giờ nên sử dụng nó như là một lĩnh vực của một cái gì đó hoặc một tham số phương pháp.
Tôi nghĩ rằng thường xuyên sử dụng nó như là một giá trị trả lại cho getters chắc chắn sẽ được sử dụng quá mức.
Không có gì sai với tùy chọn cần tránh, nó không phải là điều mà nhiều người mong muốn, và chúng tôi khá lo ngại về nguy cơ quá nhiệt tình.
(thông báo dịch vụ công cộng:. KHÔNG BAO GIỜ gọi Optional.get
trừ khi bạn có thể chứng minh điều đó sẽ không bao giờ được null, thay vào đó sử dụng một trong những phương pháp an toàn như orElse
hoặc ifPresent
Nhìn lại, chúng ta nên đã kêu gọi get
cái gì đó như getOrElseThrowNoSuchElementException
hoặc cái gì đó làm cho nó rõ ràng hơn rằng đây là một phương pháp rất nguy hiểm làm suy yếu toàn bộ mục đích của Optional
ở nơi đầu tiên.)
Nguồn
2014-10-12 18:36:14
Mặc dù điều này có khả năng thu hút các câu trả lời có ý kiến, nhưng đây là một câu hỏi hay. Tôi đang mong chờ một câu trả lời với các sự kiện thực tế về chủ đề này. – Justin
Câu hỏi đặt ra là liệu sự vô dụng là không thể tránh khỏi. Một thành phần có thể có một thuộc tính được cho phép là null, nhưng vẫn còn, lập trình viên sử dụng thành phần đó có thể quyết định nghiêm chỉnh giữ thuộc tính đó là 'không'. Vì vậy, lập trình viên không cần phải xử lý 'Tùy chọn' sau đó. Hoặc, nói cách khác, không 'null' thực sự đại diện cho sự vắng mặt của một giá trị giống như kết quả tìm kiếm (trong đó' Tùy chọn' là thích hợp) hoặc là 'null' chỉ là một thành viên của tập các giá trị có thể. – Holger
Xem thêm phần thảo luận về chú thích '@ NotNull': https://stackoverflow.com/q/4963300/873282 – koppor