一尘不染

我们在Java中是否有一个Readonly字段(可以在类本身的范围内设置)?

java

我们如何拥有一个在类内 可写 但在类外只能“读取” 的变量?

例如,不必这样做:

Class C {
  private int width, height;

  int GetWidth(){
    return width;
  }

  int GetHeight(){
    return height;
  }

  // etc..

我想做这样的事情:

Class C {
  public_readonly int width, height;

  // etc...

最好的解决方案是什么?


阅读 623

收藏
2020-12-03

共1个答案

一尘不染

用Java无法做到这一点。

您的两个选项(您提到的一个)是使用公共获取程序并使字段私有,或在类中进行详尽的文档编制。

getter方法的开销非常小(如果有的话)。如果要执行大量操作,则可能要缓存获取的值,而不是调用get方法。

编辑:

实现此目标的一种方法(尽管它比getter的开销更大innerC)是使用仅对您的C类可用的构造函数定义一个公共内部类(让我们称之为),并使您的字段公开。这样,您将无法innerC在类外部创建实例,因此无法从外部更改字段,但是可以从内部更改它们。但是,您可以从外面阅读它们。

2020-12-03