Java 8 có một số lớp tùy chọn, như OptionalDouble
, OptionalInt
, OptionalLong
.Thao tác trên Java 8 Giá trị tùy chọn *.
Có cách nào hoạt động tốt với các giá trị tùy chọn cùng loại không? Tức là, tôi muốn có thể làm:
OptionalDouble d1 = OptionalDouble.of(1.);
OptionalDouble d2 = OptionalDouble.of(2.);
OptionalDouble d3 = OptionalDouble.of(3.);
OptionalDouble result = d1.add(d2).multiply(d3);
Và tất nhiên nếu có bất kỳ kết quả nào "trống" thì kết quả sẽ trống. Sau khi googling xung quanh một chút, tôi tìm thấy một vài mẫu mã mà mọi người đang sử dụng các chức năng đó (ví dụ: add
) nhưng nó không phải là một phần của API (nữa?).
'Tùy chọn # Bản đồ' có vẻ như cần' Hàm', không phải là 'BinaryOperator', vì vậy nó chỉ hoạt động với các hàm hoạt động trên một giá trị, không phải là' add' hoặc 'multiply'. – ajb
Tôi đã sử dụng một phương pháp trợ giúp nhưng tôi không thực sự hiểu lý do tại sao họ bỏ qua các phương pháp này, hoặc ít nhất là khả năng thêm chúng.Lưu ý rằng các lớp 'Optional' cho các kiểu nguyên thủy như' OptionalDouble' là 'final' để chúng không thể được mở rộng. – siki
@siki Chúng là cuối cùng vì các tùy chọn là các lớp bất biến và do đó không bao giờ được mở rộng, vì bạn không thể đảm bảo bất biến nữa sau đó nếu một phương thức nhận tham số 'OptionalDouble'. – skiwi