是否始终适合在Java类中实现Getter和Setter方法

时间:2017-12-15 20:51:32

标签: java getter-setter setter getter

创建Java类时,是否应始终实现getter和setter方法?我理解在某些情况下,其他类能够通过setter方法更改类变量是不可取的,但只要我们在这些方法中实现输入验证,是否总是适合包含它们?

如果包含getter和setter方法并不总是合适的,请提供我们应该具体实现和不实现它们的指南。

2 个答案:

答案 0 :(得分:3)

简而言之,没有严格的规则。

如果您认为其他类需要访问它,则为字段包含getter。对于一个完全属于你班级工作内部的领域而言,没有吸气剂是完全合适的,并且不打算暴露。让你的getter返回不是字段本身,而是返回它的一些修改形式,或者它的不可变副本(例如,内部List字段的副本)也是完全合适的。

如果您认为其他类可以自由访问变异字段,则包含一个setter。省略setter实际上使该字段为只读。您还可以选择添加自定义方法来改变字段,而不是传统的setter(例如,add()方法可以将值添加到内部ListSet,只是为了举个例子)。根据具体情况,所有方法都是完全合适的。

编辑:根据既定术语将“属性”更改为“字段”

答案 1 :(得分:1)

IMO

如果你的课程是不可改变的,你就不需要制定者;我甚至认为,只要你让领域成为最终的,吸气剂就是可选的。

如果你的课程是可变的,那么你可能想要得到getter和setter,特别是对于可以变异的字段。

这里的答案很可能是基于意见/经验,就像我的一样。

编辑: 对于可变字段,我建议使用getter / setter,其中getter返回副本。

相关问题