在Java中创建常量对象

时间:2011-12-07 00:26:44

标签: java constants final

我想知道,在Java中我们如何创建一个常量对象(但不是引用也不是不可变的,因为不可变性是类的所有对象的一个​​特性)?

第一:

final MyClass c = new MyClass();

创建对非常量对象的常量引用,因此我可以这样做:

c.setData(100);

第二

String类是一个所有实例都应该是常量的类(a.k.a不可变对象)。我需要一种可以从常量对象和非常量对象创建的类型。


换句话说,如何将常量赋予类的某些对象并将其从其他对象中删除。 (无需在任何包装器中包装此对象)。

3 个答案:

答案 0 :(得分:4)

我想你需要C ++中const关键字的一些东西,这使得一个其他可变类的实例不可变。但是,Java中没有直接的等价物。

如果您控制该类,您可以定义一个只暴露getter并在需要“const”引用时使用该接口的接口 - 这不需要任何包装,但如果您需要这样做会相当麻烦这适用于很多课程。

答案 1 :(得分:1)

你最接近的是扩展基类并覆盖它的setter方法,以便它们抛出java.lang.UnsupportedOperationException,这样你就可以从基类或不可变的子类创建对象......

答案 2 :(得分:0)

那么只包含一个元素的Enumeration呢?我认为这非常接近他的需要