java - Java中常量的困惑

标签 java constants

我正在学习 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/

相关文章:

java - 使用迭代计算幂

java - 为什么 EventListenerList 没有被替换? (或 : what are the pitfalls in replacing it? )

c - 在c中的snprintf中使用const char数组

c++ - 删除模板 C++ 中的 const 限定符

php - fatal error : Undefined class constant

java - explorer.exe 崩溃后如何将图标重新添加到系统托盘

java - 为什么 Map 函数在嵌套流中不起作用

java - 尝试从 URL(在 Java 中)读取在某些情况下会产生乱码

excel - 通过变量声明多维数组大小

PHP连接变量与常量