java - 为什么Calendar类的before,after方法的参数是Object类型的?
PHP中文网
PHP中文网 2017-04-17 16:40:52
0
1
830

源码如下,当参数不是Calendar的实例时返回的是false,但请问这样的比较有意义吗?
我个人觉得参数类型是不是不妥?比如我拿Date类型去做比较,不抱任何错,但其实永远返回的都是false

public boolean before(Object when) {
    return when instanceof Calendar
        && compareTo((Calendar)when) < 0;
}

public boolean after(Object when) {
    return when instanceof Calendar
        && compareTo((Calendar)when) > 0;
}

//我认为这样比较合理
public boolean after(Canlendar when) {
    return compareTo(when) > 0;
}
PHP中文网
PHP中文网

认证高级PHP讲师

모든 응답(1)
巴扎黑

따라서 ComparaTo()를 사용하여 캘린더를 비교하세요.

날짜캘린더 는 불량으로 인식됩니다.
같은 질문 stackoverflow

그렇게 할 특별한 이유는 없다고 생각합니다. 불행하게도 java.util.Calendar에는 우리가 안고 가야 할 몇 가지 디자인 문제가 있습니다.

보충 사항:
Java8은 변경 불가능한 값을 가지며 스레드로부터 안전한 새로운 패키지 java.time을 구현합니다.

이전 API와의 대응

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿