찾다

 >  Q&A  >  본문

java - 为什么Calendar类的before,after方法的参数是Object类型的?

源码如下,当参数不是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中文网2805일 전835

모든 응답(1)나는 대답할 것이다

  • 巴扎黑

    巴扎黑2017-04-17 16:42:52

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

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

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

    <시간>

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

    이전 API와의 대응

    회신하다
    0
  • 취소회신하다