在 Java 类 中实现 Getter 和 Setter 方法总是合适的吗
Is It Always Appropriate to Implement Getter and Setter Methods in Java Classes
创建 Java 类 时,getter 和 setter 方法是否总是要执行?我知道在某些情况下,其他 classes 能够通过 setter 方法更改 class 变量是不可取的,但只要我们在内部实现输入验证那些方法,包括它们总是合适的吗?
如果包含 getter 和 setter 方法并不总是合适的,请提供我们何时应该具体实施和不实施它们的指南。
简而言之,没有硬性规定。
如果您认为其他 class 需要访问某个字段,则可以为该字段添加一个 getter。对于完全属于您的 class 工作内部且不打算公开的字段,没有 getter 是完全合适的。让你的 getter return 不是字段本身,而是它的一些修改形式,或者它的不可变副本(例如,内部 List
字段的副本)也是完全合适的.
如果您认为其他 class 需要自由访问以更改该字段,则可以添加 setter。省略 setter 实质上会使该字段变为只读。您还可以选择包括自定义方法来改变您的字段,以代替传统的 setter(例如,add()
方法将值添加到内部 List
或 Set
,只是举个例子)。所有的方法都是完全合适的,视情况而定。
编辑:根据已建立的术语
将"property"更改为"field"
我
如果您的 class 是不可变的,则不需要设置器;我什至认为 getter 是可选的,只要您将这些字段设为最终字段即可。
如果您的 class 是可变的,您可能需要 getters 和 setter,特别是对于可以突变的字段。
这里的答案很可能是 opinion/experience 基础的,就像我的一样。
编辑:
对于可变字段,我建议使用 getters/setter,其中 getter returns 一个副本。
创建 Java 类 时,getter 和 setter 方法是否总是要执行?我知道在某些情况下,其他 classes 能够通过 setter 方法更改 class 变量是不可取的,但只要我们在内部实现输入验证那些方法,包括它们总是合适的吗?
如果包含 getter 和 setter 方法并不总是合适的,请提供我们何时应该具体实施和不实施它们的指南。
简而言之,没有硬性规定。
如果您认为其他 class 需要访问某个字段,则可以为该字段添加一个 getter。对于完全属于您的 class 工作内部且不打算公开的字段,没有 getter 是完全合适的。让你的 getter return 不是字段本身,而是它的一些修改形式,或者它的不可变副本(例如,内部 List
字段的副本)也是完全合适的.
如果您认为其他 class 需要自由访问以更改该字段,则可以添加 setter。省略 setter 实质上会使该字段变为只读。您还可以选择包括自定义方法来改变您的字段,以代替传统的 setter(例如,add()
方法将值添加到内部 List
或 Set
,只是举个例子)。所有的方法都是完全合适的,视情况而定。
编辑:根据已建立的术语
将"property"更改为"field"我
如果您的 class 是不可变的,则不需要设置器;我什至认为 getter 是可选的,只要您将这些字段设为最终字段即可。
如果您的 class 是可变的,您可能需要 getters 和 setter,特别是对于可以突变的字段。
这里的答案很可能是 opinion/experience 基础的,就像我的一样。
编辑: 对于可变字段,我建议使用 getters/setter,其中 getter returns 一个副本。