Calendar実装の違い
JDK1.4のjavadocでは
> set(f, value) では、フィールド f が value に変更されます。
> さらに、フィールド f が変更されたことを示すように内部メンバ
> 変数が設定されます。f はただちに変更されますが、カレンダの
> ミリ秒は、get()、getTime()、または getTimeInMillis() が次に
> 呼び出されるまで再計算されません。
と記載されていますが、beforeメソッドでも例外がスローされます。
Tiger(JDK1.5)ではjavadocの記載どおりに例外がスローされるようになったようです。
> set(f, value) では、フィールド f が value に変更されます。
> さらに、フィールド f が変更されたことを示すように内部メンバ
> 変数が設定されます。f はただちに変更されますが、カレンダの
> ミリ秒は、get()、getTime()、または getTimeInMillis() が次に
> 呼び出されるまで再計算されません。
と記載されていますが、beforeメソッドでも例外がスローされます。
Tiger(JDK1.5)ではjavadocの記載どおりに例外がスローされるようになったようです。
|
java version "1.4.2_04" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_04-b05) Java HotSpot(TM) Client VM (build 1.4.2_04-b05, mixed mode) args[1]: 2007 args[2]: 1 args[3]: 33 args[4]: false Exception in thread "main" java.lang.IllegalArgumentException at java.util.GregorianCalendar.computeTime(GregorianCalendar.java:1523) at java.util.Calendar.updateTime(Calendar.java:1569) at java.util.Calendar.getTimeInMillis(Calendar.java:912) at java.util.Calendar.before(Calendar.java:1163) at SunIbmCalendarProblem.main(SunIbmCalendarProblem.java:22) |
java version "1.5.0_06" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05) Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode, sharing) args[1]: 2007 args[2]: 1 args[3]: 33 args[4]: false 入力された日付は過去です。 Exception in thread "main" java.lang.IllegalArgumentException: DAY_OF_MONTH at java.util.GregorianCalendar.computeTime(GregorianCalendar.java:2290) at java.util.Calendar.updateTime(Calendar.java:2260) at java.util.Calendar.getTimeInMillis(Calendar.java:1044) at java.util.Calendar.getTime(Calendar.java:1017) at SunIbmCalendarProblem.main(SunIbmCalendarProblem.java:29) |
コメント