Một vấn đề với việc sử dụng ổi của Optional
loại như các đối số của phương pháp là bạn không thể chỉ đơn giản là viếtĐi qua Optional.absent() đánh giá cao với các phương pháp xác
// method declaration
public void foo(Optional<String> arg);
// compiler error
foo(Optional.absent());
do suy luận kiểu thất bại, nhưng thay vì phải thêm nhập rõ ràng:
// real method call
foo(Optional.<String> absent());
Làm cách nào để tránh?
Không thực sự tốt hơn, nhưng FYI, 'Tùy chọn' có xu hướng được sử dụng phổ biến hơn làm giá trị trả về so với loại đối số phương thức. (Nó dễ dàng hơn nhiều để quên rằng một giá trị trả về từ một phương thức có thể là null so với một đối số cho phương thức bạn đang viết.) –
Với biểu thức phức tạp, tôi sử dụng biến cục bộ của một kiểu thích hợp (trên RHS của bài tập không có biến kiểu nào là cần thiết) để có được một cái gì đó dễ đọc hơn. Nhưng ở đây không có gì có thể được thực hiện cho đến khi độ phân giải đến (có lẽ là JDK8). – maaartinus
@LouisWasserman Vẫn có những lợi ích khi sử dụng 'Tùy chọn' làm đối số: 1) làm rõ cho người dùng API rằng một đối số có thể không có mặt; 2) giúp bạn dễ dàng chuyển giá trị trả về của phương thức khác cho phương thức của bạn. –