在C++中,我可以定义一个访问者成员函数,该函数返回私有数据成员的值(或引用),这样调用者就无法以任何方式修改该私有数据成员.
有没有办法在Java中这样做?
如果是这样,怎么样?
我知道final关键字但AFAIK,当应用于方法时:
但它不会限制方法返回对数据成员的引用,以便调用者无法修改它.
我忽略了一些明显的东西吗?
Joa*_*uer 21
const在Java中没有相当于C "类型修饰符"(遗憾的是).
你可以得到的最接近的是在可变对象周围返回一个不可变对象或一个不可变包装器.
但是,不变性不是Java的语言特性,因此您必须依赖于库.
不可变对象的示例是:
Integer,Character..StringFileURL常用的不可变的包装(即约可变类型,以防止突变包装)是指那些通过返回的Collecton.unmodifiable*()方法.
这在java中不存在.final并且const具有不同的语义,除非应用于基本类型的变量.java解决方案通常涉及创建不可变类 - 其中对象在构造中初始化,并且不提供允许更改的访问器.这类的例子可以是例如String或Integer.
您要么返回不可变对象,要么返回私有实例变量的副本.这样,对象的内部状态被"保护"免于修改,即:
private MyMutableObject mutable = ...
public MyMutableObject getMutableObject() {
return new MyMutableObject(this.mutable);
}
`
Run Code Online (Sandbox Code Playgroud)