访问班级中的字段时的良好做法

时间:2011-12-07 00:25:12

标签: java software-design

当您必须访问班级中的“成员变量”/字段时,最好是直接访问它还是调用getter和setter?为什么?

4 个答案:

答案 0 :(得分:3)

调用setter / getter而不是直接访问。这样就可以运行setter / getter中任何额外的必需代码。

答案 1 :(得分:3)

我认为将您的字段设为私有只会带来好处,只能通过getter和可能的setter提供访问权限

  • 受控访问。如果您只想提供读访问权限,或者只想提供写访问权限,则只能使用getter / setters
  • 来实现此目的
  • 如果要为bean属性触发PropertyChangeEvents,可以在setter中包含此代码。否则,所有直接修改此字段的调用也应触发更改事件
  • 我个人觉得在我的IDE中发现修改字段更容易。对该字段的唯一直接访问是在类中(因为它是私有字段),并且所有外部更改都通过setter。这允许比必须使用现场观察点更快的调试
  • 当字段更改可以覆盖设置器时想要做额外操作的子类,调用super.set并执行额外的操作

我能想到的唯一可能的缺点是它需要更多的代码来编写(对于getter和setter),还需要更多的代码来从类外部访问字段。但是目前的IDE是一个相当蹩脚的借口

一些额外的文献: link1link2

答案 2 :(得分:2)

Getter / Setter允许延迟实例化,这通常是一种方法。此外,通过这种方式,您可以对变量进行受控访问(既可以为您自己,也可以作为您可能要公开的任何API的一部分);隐藏初始化等实现的能力也非常重要。

在我看来,S / G的最大好处是降低了某人在没有您控制的情况下修改它的风险。一个小例子..考虑到一个吸气剂可能会给你一个copy原件而不是原件。

好处是多方面的,当给出选择时,选择setter / getter以获得数据封装和更多控制的好处。

答案 3 :(得分:0)

如果它是调用类的成员,则直接访问它。否则使用getter / setter方法。

为什么呢?您不应该只是创建getter / setter方法,以便调用类可以访问自己的成员。否则你应该使用getter / setter方法,原因是其他人详细说明。