在 C++ 中,我可以定义一个 accessor 成员函数,它返回(或引用)私有(private)数据成员的值,这样调用者就不能以任何方式修改该私有(private)数据成员。
有没有办法在 Java 中做到这一点?
如果有,怎么做?
我知道 final
关键字,但 AFAIK,当应用于 method 时:
- 防止覆盖/多态 子类中的那个方法。
使该方法可内联。(请参阅下面@Joachim Sauer 的评论)
但它并不限制方法返回对数据成员的引用,因此调用者无法修改它。
我是否忽略了一些明显的事情?
最佳答案
在 Java 中没有与 C const
“类型修饰符”等效的东西(遗憾)。
你能得到的最接近的方法是返回一个不可变对象(immutable对象)或一个可变对象周围的不可变包装器。
但是,不变性不是 Java 的语言特性,因此您必须依赖库。
不可变对象(immutable对象)的示例如下:
- 原始包装器
Integer
、Character
、.. 字符串
文件
网址
常用的不可变包装器(即防止突变的可变类型的包装器)是由 the Collecton.unmodifiable*()
methods 返回的那些。 .
关于java - C++ 的 const 成员函数的 Java 等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5886439/