在创建Java类时,是否应该始终实现getter和setter方法?我知道在某些情况下,让其他类能够通过setter方法更改类变量是不可取的,但只要我们在这些方法中实现输入验证,是否总是适合包含它们?
如果并不总是适合包含getter和setter方法,请提供具体实现和不实现它们的指导原则。
发布于 2017-12-16 05:11:47
简而言之,没有硬性规定。
如果您认为其他类需要访问某个字段,则可以为该字段添加一个getter。对于完全在类内部工作的字段,不使用getter是完全合适的,并且不打算公开。让getter返回的不是字段本身,而是它的一些修改形式,或者它的一个不可变的副本(例如,一个内部List
字段的副本),这也是完全合适的。
如果您认为其他类需要自由访问以更改字段,则可以包含setter。省略setter实际上会使该字段成为只读字段。您还可以选择包含一个自定义方法来改变您的字段,而不是传统的setter方法(例如,将值添加到内部List
或Set
的add()
方法,仅举个例子)。所有的方法都是完全合适的,这取决于具体情况。
编辑:将"property“改为"field”,以符合已建立的术语
发布于 2017-12-16 05:16:49
国际海事组织
如果您的类是不可变的,则不需要setter;我甚至认为getter是可选的,只要您将字段设为final即可。
如果您的类是可变的,那么您可能需要同时使用getter和setter,特别是对于可以变化的字段。
这里的答案很可能是基于观点/经验的,就像我的一样。
编辑:对于可变字段,我建议使用getters/setter,其中getter返回一个副本。
https://stackoverflow.com/questions/47839697
复制相似问题