创建Java类时,是否应始终实现getter和setter方法?我理解在某些情况下,其他类能够通过setter方法更改类变量是不可取的,但只要我们在这些方法中实现输入验证,是否总是适合包含它们?
如果包含getter和setter方法并不总是合适的,请提供我们应该具体实现和不实现它们的指南。
答案 0 :(得分:3)
简而言之,没有严格的规则。
如果您认为其他类需要访问它,则为字段包含getter。对于一个完全属于你班级工作内部的领域而言,没有吸气剂是完全合适的,并且不打算暴露。让你的getter返回不是字段本身,而是返回它的一些修改形式,或者它的不可变副本(例如,内部List
字段的副本)也是完全合适的。
如果您认为其他类可以自由访问变异字段,则包含一个setter。省略setter实际上使该字段为只读。您还可以选择添加自定义方法来改变字段,而不是传统的setter(例如,add()
方法可以将值添加到内部List
或Set
,只是为了举个例子)。根据具体情况,所有方法都是完全合适的。
编辑:根据既定术语将“属性”更改为“字段”
答案 1 :(得分:1)
IMO
如果你的课程是不可改变的,你就不需要制定者;我甚至认为,只要你让领域成为最终的,吸气剂就是可选的。
如果你的课程是可变的,那么你可能想要得到getter和setter,特别是对于可以变异的字段。
这里的答案很可能是基于意见/经验,就像我的一样。
编辑: 对于可变字段,我建议使用getter / setter,其中getter返回副本。