我正在学习 java 编程,我对常量有点困惑。到目前为止,从我读到的内容来看,常量是最终的,与变量不同,不能重新分配一个新值。但是,当我使用 Calender 类时,有一个似乎更改常量字段的 set 方法。例如:
Calendar cal = Calendar.getInstance();
System.out.println("The year is " + cal.get(Calendar.YEAR));
<b>cal.set(Calendar.YEAR, 2001);</b>
System.out.println("The year is " + cal.get(Calendar.YEAR));
如果 Calendar.YEAR
字段在 Calendar
类中被声明为 final
那么为什么我可以使用设置方法?
最佳答案
Calendar.YEAR
只是一个常量,说明您要在日历中设置哪个逻辑字段。
目的是避免使用 API
setYear
setDay
setMonth
...
回想起来,我会说这是一个非常糟糕的主意——连同 java.util.Calendar
的大部分其他设计一样。和 java.util.Date
.
所以这个调用:
cal.set(Calendar.YEAR, 2001)
不会改变 Calendar.YEAR
的值...它更改了 Calendar
中的一些其他(私有(private))字段对象。
关于java - Java中常量的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26862948/