Java 什么是startMode和endMode?

Java 什么是startMode和endMode?,java,Java,我正在试用Java的SimpleTimeZone,我想了解它在创建新SimpleTimeZone对象时生成的值。首先,这是我的代码和输出 import java.util.*; public class SimpleTimeZoneDemo { public static void main( String args[] ){ // create simple time zone object SimpleTimeZone stobj = new SimpleTimeZ

我正在试用Java的SimpleTimeZone,我想了解它在创建新SimpleTimeZone对象时生成的值。首先,这是我的代码和输出

import java.util.*;

public class SimpleTimeZoneDemo {
    public static void main( String args[] ){
    // create simple time zone object
    SimpleTimeZone stobj = new SimpleTimeZone(820,"GMT");

    // checking initial value     
    System.out.println("Initial value: " + stobj);

    // setting start rule   
    stobj.setStartRule( Calendar.MAY, 2, 3600000);   

    // checking the new value      
    System.out.println("Final value : " + stobj);
} 
它生成的输出是

Initial value: java.util.SimpleTimeZone[id=GMT,offset=820,dstSavings=3600000,
useDaylight=false,startYear=0,startMode=0,startMonth=0,startDay=0,
startDayOfWeek=0,startTime=0,startTimeMode=0,endMode=0,endMonth=0,endDay=0,
endDayOfWeek=0,endTime=0,endTimeMode=0]

Final value : java.util.SimpleTimeZone[id=GMT,offset=820,dstSavings=3600000,
useDaylight=false,startYear=0,startMode=1,startMonth=4,startDay=2,
startDayOfWeek=0,startTime=3600000,startTimeMode=0,endMode=0,
endMonth=0,endDay=0,endDayOfWeek=0,endTime=0,endTimeMode=0]

什么是
startMode
endMode
?为什么
startMode
从0更改为1?我正试图找出它,它似乎与日光节约时间有关?

startMode
endMode
是内部字段。您不能在公共API中访问它们

但是,如果查看源代码内部,它们会被记录下来:

对于
startMode

指定开始规则模式的变量。采用以下值:

  • DOM_模式
    :一周中的确切日期;e、 g.,3月1日
  • 月模式下的道琼斯指数
    :月份中的星期几;e、 在三月的最后一个星期天
  • DOW_GE_DOM_MODE
    :月日后的星期日;e、 例如,3月15日星期日或之后
  • DOW_LE_DOM_模式
    :月日前一周的某一天;e、 例如,3月15日或之前的星期日
此字段的设置会影响
startDay
字段的解释

如果
useDaylight
为false,则忽略此值

对于
endMode

指定结束规则模式的变量。采用以下值:

  • DOM_模式
    :一周中的确切日期;e、 g.,3月1日
  • 月模式下的道琼斯指数
    :月份中的星期几;e、 在三月的最后一个星期天
  • DOW_GE_DOM_MODE
    :月日后的星期日;e、 例如,3月15日星期日或之后
  • DOW_LE_DOM_模式
    :月日前一周的某一天;e、 例如,3月15日或之前的星期日
此字段的设置会影响
endDay
字段的解释

如果
useDaylight
为false,则忽略此值


在您的代码中,第一种情况下,
startMode
为0,因为它未初始化,所以
int
采用其默认值。它变为1,因为您将开始规则设置为特定日期,因此模式变为
DOM\u mode=1
。请注意,
endMode
保持为0,因为没有设置结束规则。

为什么public-toString()方法返回一个提及未记录和不可访问字段的字符串?@KlitosKyriacou这才是真正的问题,不是吗?