java - C++ 的 const 成员函数的 Java 等价物是什么?

标签 java

在 C++ 中,我可以定义一个 accessor 成员函数,它返回(或引用)私有(private)数据成员的值,这样调用者就不能以任何方式修改该私有(private)数据成员。

有没有办法在 Java 中做到这一点?

如果有,怎么做?

我知道 final 关键字,但 AFAIK,当应用于 method 时:

  1. 防止覆盖/多态 子类中的那个方法。
  2. 使该方法可内联。(请参阅下面@Joachim Sauer 的评论)

但它并不限制方法返回对数据成员的引用,因此调用者无法修改它。

我是否忽略了一些明显的事情?

最佳答案

在 Java 中没有与 C const “类型修饰符”等效的东西(遗憾)。

你能得到的最接近的方法是返回一个不可变对象(immutable对象)或一个可变对象周围的不可变包装器。

但是,不变性不是 Java 的语言特性,因此您必须依赖库。

不可变对象(immutable对象)的示例如下:

  • 原始包装器IntegerCharacter、..
  • 字符串
  • 文件
  • 网址

常用的不可变包装器(即防止突变的可变类型的包装器)是由 the Collecton.unmodifiable*() methods 返回的那些。 .

关于java - C++ 的 const 成员函数的 Java 等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5886439/

相关文章:

java - ECDH 服务器 key 交换消息上的签名无效

java - 为什么不调用从返回 null 的静态方法链接的静态变量抛出 NPE?

java - GWT 验证的用户 session

java - 在javafx中加载多个fxml

c# - 帮助将java代码转换为C#

java - 后台服务套接字断开->前台开关

java - 为什么我的 @PersistenceContext EntityManager 上抛出 NullPointerException?

java - 用于客户端服务器通信的 Java 网络

java - @CrossOrigin 注释在 IntelliJ 中停止编译

java - 获取JPanel、JFrame当前大小