Java:为什么静态字段是;“独立”;彼此
在以下代码中,Java:为什么静态字段是;“独立”;彼此,java,static,field,Java,Static,Field,在以下代码中,set方法更改Calendar类的字段值。 字段YEAR被声明为static int YEAR。那么,为什么通过创建两个Calendar类的对象,一个对象的更改会反映到另一个对象?在这里,这种情况不会发生。 我想问一下Java开发人员是如何实现这一点的 Calendar calendar = new GregorianCalendar(); Calendar cal = new GregorianCalendar(2011,9,13); System.out.println(cal
set
方法更改Calendar
类的字段值。
字段YEAR
被声明为static int YEAR
。那么,为什么通过创建两个Calendar
类的对象,一个对象的更改会反映到另一个对象?在这里,这种情况不会发生。
我想问一下Java开发人员是如何实现这一点的
Calendar calendar = new GregorianCalendar();
Calendar cal = new GregorianCalendar(2011,9,13);
System.out.println(calendar.get(Calendar.YEAR));
System.out.println(cal.get(Calendar.YEAR));
Calendar.YEAR
是一个常量,仅用于命名日历使用的字段。该字段的值是而不是静态的:它可以并且将在日历
的实例之间变化
Calendar
为日期和时间的不同部分定义了许多字段名,专门用于相应字段的get和set操作
javadoc中日历年的部分
至于实现,set
和get
方法知道这些不同的字段类型,并根据传入的常量更改实例中的值。把它想象成get
或set
中的一个大switch
语句,打开所有字段值 YEAR
(以及其他相关字段)只是常量,用于告诉您的日历
您想要哪个字段。如果查看YEAR
的值,您将看到它实际上是静态final
正如您所期望的那样,单个日历
的年份最终存储在日历
对象中,年
常量仅用于询问日历
的实际年份值。那么,它是如何声明的呢?静态整数年..?public static final int YEAR_FIELD
我看到了,但是静态日历字段YEAR和每个对象的内部字段之间的链接(在代码级别)是如何完成的?@sleax在本例中,编写了Calendar.get
方法,以便它了解不同常量的用法。因此,当您调用Calendar.get
时,它会查看传递的常量,例如,YEAR
,并返回相应的值。因此在get
方法中,有一个类似于带有所有可能的常量字段名的大型switch
语句。与日历相同。设置方法