我目前正在努力解决Java.Util.Calendar
我有一种方法可以创建一个日历,该日历具有年、月和日的随机值。
public Calendar getRandomGeburtstag() {
int year = 1999 - (int) (Math.random() * 80);
int month = (int) (Math.random() * 12) + 1;
int monthLength = 28;
int day = (int) (Math.random() * monthLength) + 1;
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(year, month, day);
return calendar;
}
我将此日历存储在“Person”类中,该类有一个简单的 getter 方法。
然后我在两个不同的场合要求那个日历。对象在此期间没有改变。打印日历会给出两种不同的输出:
java.util.GregorianCalendar[areAllFieldsSet=false,ERA=?,WEEK_OF_YEAR=?,WEEK_OF_MONTH=?,DAY_OF_YEAR=?,DAY_OF_WEEK=?,DAY_OF_WEEK_IN_MONTH=?,AM_PM=?,HOUR=?,HOUR_OF_DAY=?,MINUTE=?,SECOND=?,MILLISECOND=?,ZONE_OFFSET=?,DST_OFFSET=?]
和
java.util.GregorianCalendar[areAllFieldsSet=true,ERA=1,WEEK_OF_YEAR=52,WEEK_OF_MONTH=5,DAY_OF_YEAR=362,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=4,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=3600000,DST_OFFSET=0]
(我省略了保持相同的字段,它们都在两个打印输出中设置)
如您所见,以前未设置的所有字段都在两个请求之间的某处获得了默认值或计算值。在请求之间没有使用反对,所以它可能是 JVM。
问题是,该字段ZONE_OFFSET
由我无权访问的方法使用。ZONE_OFFSET=?
仅在给出时才打印所需的输出。
有什么办法可以停止这些值的自动分配?