2010-09-21 34 views
10

Từ javadoc của Calendar.before(Object when):Lịch.before (Object when), tại sao Object?

Trả về xem Lịch này có biểu thị thời gian trước thời gian được đại diện bởi đối tượng được chỉ định hay không. Phương pháp này tương đương với:

compareTo(when) < 0 

nếu và chỉ khi nào là trường hợp Lịch. Nếu không, phương thức trả về false.

Tại sao nó chấp nhận một đối tượng nếu khi ai đó vượt qua một thứ không phải là trường hợp Lịch, nó trả về false? Tại sao không chỉ chấp nhận một cá thể Lịch? Điều này giúp tôi theo dõi các kết quả không chính xác trong một chức năng trong một thời gian dài.

Trả lời

7

Tôi nghĩ rằng không có lý do cụ thể cho điều đó. java.util.Calendar có một số vấn đề về thiết kế mà chúng tôi phải gặp phải.

+1

+1. Lưu ý rằng đối tượng Date (có vấn đề về thiết kế Calendar được cho là địa chỉ) có một phương thức trước mà không lấy một đối tượng (nhưng một ngày khác). Không phải API đặc biệt nhất quán. – Thilo

+4

Bởi "sống với" bạn có nghĩa là đổ trong lợi của Joda Thời gian? – ILMTitan

-1

Tôi nghĩ rằng điều này có thể là cung cấp đóng gói bằng cách sử dụng hành vi đa hình trong phương thức before().

1

Lưu ý rằng phương thức không phải là final (và bản thân lớp đó sẽ trừu tượng). Vui lòng phân lớp nó và cung cấp một phiên bản sẽ lấy số Date hoặc số LocalDate của JodaTime. Nếu bạn thấy nó theo cách đó, nó chỉ ra rằng nó rất xa tầm nhìn của các tác giả của JDK để cung cấp một giải pháp chung như vậy.

Các vấn đề liên quan