如何在Java中创建常量对象?

gam*_*ver 4 java

如何创建对常量对象的引用?

final Myclass obj = new Myclass();
Run Code Online (Sandbox Code Playgroud)

不起作用,它说obj(引用)不应该重新分配,但我们仍然可以改变引用的对象.

我想确保一旦构造​​对象本身不会改变.

Bal*_*usC 16

只是让它不可变(就像String是).或者将它包装在另一个对象中,该对象限制对相关对象的mutator的访问(比如Collections.unmodifiableList()和consorts).

  • 在Effective Java中检查"赞成不变性":http://wiki.glassfish.java.net/attach/JavaProgramming/ej.html#immutablerecipe (2认同)

And*_*s_D 10

你混合了两件事:final和immutable.

变量可以是final,因此在初始化之后你不能改变它的值(或对象引用)(当然你可以改变引用的对象属性)

对象可以是不可变的(不是关键字而是属性),因此在创建后不能更改它的值.String是一个很好的例子 - 你不能在String对象中更改后备char [].


Erk*_*lat 9

你想要的是一个不可变对象.Java中没有可以立即使对象不可变的关键字.您必须设计对象的逻辑,以便无法更改其状态.正如BalusC所说,你可以将它包装在另一个限制访问其mutator的对象中.