我们如何拥有一个在类内 可写 但在类外只能“读取” 的变量?
例如,不必这样做:
Class C { private int width, height; int GetWidth(){ return width; } int GetHeight(){ return height; } // etc..
我想做这样的事情:
Class C { public_readonly int width, height; // etc...
最好的解决方案是什么?
用Java无法做到这一点。
您的两个选项(您提到的一个)是使用公共获取程序并使字段私有,或在类中进行详尽的文档编制。
getter方法的开销非常小(如果有的话)。如果要执行大量操作,则可能要缓存获取的值,而不是调用get方法。
编辑:
实现此目标的一种方法(尽管它比getter的开销更大innerC)是使用仅对您的C类可用的构造函数定义一个公共内部类(让我们称之为),并使您的字段公开。这样,您将无法innerC在类外部创建实例,因此无法从外部更改字段,但是可以从内部更改它们。但是,您可以从外面阅读它们。
innerC
C