应该何时使用公共变量?

时间:2017-11-17 17:51:23

标签: java android

使用ScanResult的android开发者页面https://developer.android.com/reference/android/net/wifi/ScanResult.html,我注意到他们有公共变量BSSID,SSID,功能等。我认为这很奇怪,因为在公共变量上使用getter / setter是java规范。有没有一个广泛的,基于规则的理由,为什么公共变量有时被用于getter / setter?

2 个答案:

答案 0 :(得分:1)

在你提到的这个例子中,它们实际上是公共变量,这是不好的做法。奇怪为什么他们把它们公之于众。这打破了封装 - 隐藏数据的原则,以便能够精确控制数据的设置对象和时间。

但是如果你认为,让会员私密并允许愚蠢的吸气者和制定者有什么意义呢?它与直接设置它们相同。

答案是这样的: 1.如果您将字段设为公共字段,则无法更改类的API,如果您稍后决定在getter或setter中添加一些日志记录或安全性约束,则无法创建这些字段私密而不破坏人们的代码。 2. Getters和setter允许覆盖子类。 和许多其他优点。

总而言之 - 将这些字段公之于众是愚蠢的。不期望谷歌的工程师。他们还使类扩展了Object(默认情况下是java中的情况)

答案 1 :(得分:0)

  • 默认情况下将变量设为私有
  • 需要从外部包访问的变量应该使用访问器方法(getter / setters)
  • 只能在私有包中使用的变量可以安全地成为“公共”