在Java中,在运行时向最终静态哈希集添加(或删除)对象?
我正在使用Java4;不久前,我遇到一个变量,它在公共类中声明为:在Java中,在运行时向最终静态哈希集添加(或删除)对象?,java,static,runtime,set,final,Java,Static,Runtime,Set,Final,我正在使用Java4;不久前,我遇到一个变量,它在公共类中声明为: final private static Set name = new HashSet(){ { add(object1); ...; add(objectN); } }; 在某些情况下,我需要在运行时向它添加(或删除)对象 该类有一个公共构造函数,在我必须向该集合添加或删除对象之前调用了该构造函数 我认为最终变量被视为常量,因此在运行时无法对其调用.add(对象)和.remove(对
final private static Set name = new HashSet(){
{
add(object1);
...;
add(objectN);
}
};
在某些情况下,我需要在运行时向它添加(或删除)对象
该类有一个公共构造函数,在我必须向该集合添加或删除对象之前调用了该构造函数
我认为最终变量被视为常量,因此在运行时无法对其调用.add(对象)和.remove(对象)方法。但是我还是做了,我创建了两个公共方法来执行添加和删除操作,并且成功了
为什么??我希望它要么不编译,要么在运行时抛出某种异常
有人能解释一下吗
多谢各位
致意您不能更改最终变量的引用,但可以更改状态 例如:
您不能像
name=newhashset()那样更改引用代码>您不能更改最终变量的引用,但可以更改状态
例如:
您不能像name=newhashset()那样更改引用代码>在所属类的构造函数执行后,无法为最终变量分配新引用。但是,您完全可以通过调用它们的方法来更改它们的内部状态。在它们所属的类的构造函数执行之后,不能为最终变量分配新的引用。但是,您完全可以通过调用它们的方法来更改它们的内部状态。对name
变量的引用基本上是一个常量,无法修改。但是,当您发现时,集合的内容可以在运行时发生变化。为了防止这种情况,你可以使它不可变,例如
对name
变量的引用基本上是一个常量,不能修改。但是,当您发现时,集合的内容可以在运行时发生变化。为了防止这种情况,你可以使它不可变,例如
final private static Set name = Collections.unmodifiableSet(new HashSet(){
{
add(object1);
...;
add(objectN);
}
});