java - 在java中创建Hashtable作为final

标签 java hashtable

我们知道java中“final”关键字的用途。在将变量声明为 final 时,我们必须初始化变量。比如“final int a=10;” 我们不能改变“a”的值。但是,如果我们选择 HashTable,它甚至可以添加一些值,甚至将 HashTable 声明为 final。

示例::

 private static final Hashtable<String,Integer> MYHASH = new Hashtable<String,Integer>() 
{{     put("foo",      1);     
       put("bar",      256);     
       put("data",     3);     
       put("moredata", 27);     
       put("hello",    32);     
       put("world",    65536);  }}; 

现在我将 MYHASH HashTable 声明为最终的。如果我尝试为此添加更多元素,则可以接受。

MYHASH.put("NEW DATA",      256);

现在“新数据”已添加到哈希表中。 我的问题是为什么它允许添加甚至声明为 final ???

最佳答案

因为 final 标记的是引用,而不是对象。您不能将该引用点指向不同的哈希表。但是您可以对该对象执行任何操作,包括添加和删除内容。

您的 int 示例是原始类型,而不是引用。 Final 意味着您不能更改变量的值。因此,使用 int 您不能更改变量的值,例如使 int 的值不同。使用对象引用,您无法更改引用的值,即它指向的对象。

关于java - 在java中创建Hashtable作为final,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7996499/

相关文章:

java - 如何在java中实现哈希表的构造函数

java - 链表数组

java - 如何将 AbstractContextLoaderInitializer 包含到我的 mvc 测试执行中?

java - 剪切 XML 形状的一部分

java - 从 ArrayList 中删除重复的自定义对象

java - 我想将变量传输到扩展类而不将其值更改为 null

c++ - 数据正确放入数组但打印数组时不存在

java - 在 Java 中解析格式错误的 json

performance - 为超大数据选择数据结构

c# - 从哈希表中查找值