Các mã sau đây cho Integer
sử dụng đối tượng thực tập:Boolean có tập trung vào Java không?
Nó không phải là rõ ràng từ tài liệu API cho dù mã này cho Boolean
còn sử dụng đối tượng thực tập nội trú:
Boolean.valueOf("true")
Rõ ràng, nó có thể. Nhưng nó có phải không?
CẬP NHẬT
Tôi đồng ý rằng mã nguồn có thể giải thích những gì thực sự xảy ra (BTW, cảm ơn cho câu trả lời). Để làm cho câu hỏi ít quan trọng hơn, có bất kỳ phần nào của đặc tả Java API hay JSL mà nói với những gì PHẢI xảy ra?
Đó là tự nhiên để đặt câu hỏi đối với các mã như thế này:
String str = "true";
if (Boolean.valueOf(str) == Boolean.TRUE) { ... }
Kết quả phụ thuộc vào việc "đối tượng thực tập" được đảm bảo hay không. Tốt nhất là nên tránh mã này hoàn toàn và sử dụng true
thay vì Boolean.TRUE
(thay vì tìm kiếm chi tiết trong bất kỳ thông số hoặc nguồn nào), nhưng đó là lý do hợp lệ để đặt câu hỏi.
LƯU Ý: Trên thực tế, tôi không thấy các đảm bảo về việc thực hiện đối tượng cho Integer
trong bất kỳ thông số kỹ thuật nào có sẵn. Vì vậy, nó có thể tất cả chỉ là một chi tiết thực hiện không ai nên dựa vào.
Bạn có thể tự kiểm tra bằng cách xem mã nguồn –
Bạn cũng có thể kiểm tra bằng cách gọi hai lần và kiểm tra xem bạn có nhận được cùng một cá thể Boolean hai lần hay không. Tại sao bạn quan tâm? Điều này không nên thay đổi bất kỳ điều gì đối với mã của bạn. –
@a_horse_with_no_name, ** là đối tượng thực tập bên ngoài đặc tả? ** Nguồn-khôn ngoan Tôi đoán nó trả về đối tượng 'Boolean.TRUE' (hoặc' Boolean.FALSE' cho '" false "'). Trong thực tế, với một bộ giá trị nhỏ như vậy (chỉ 2) các hằng số này đủ để mô hình hóa hồ bơi. Nhưng nó được quyết định bởi đặc điểm kỹ thuật? – uvsmtid