使用ScanResult的android开发者页面https://developer.android.com/reference/android/net/wifi/ScanResult.html,我注意到他们有公共变量BSSID,SSID,功能等。我认为这很奇怪,因为在公共变量上使用getter / setter是java规范。有没有一个广泛的,基于规则的理由,为什么公共变量有时被用于getter / setter?
答案 0 :(得分:1)
在你提到的这个例子中,它们实际上是公共变量,这是不好的做法。奇怪为什么他们把它们公之于众。这打破了封装 - 隐藏数据的原则,以便能够精确控制数据的设置对象和时间。
但是如果你认为,让会员私密并允许愚蠢的吸气者和制定者有什么意义呢?它与直接设置它们相同。
答案是这样的: 1.如果您将字段设为公共字段,则无法更改类的API,如果您稍后决定在getter或setter中添加一些日志记录或安全性约束,则无法创建这些字段私密而不破坏人们的代码。 2. Getters和setter允许覆盖子类。 和许多其他优点。
总而言之 - 将这些字段公之于众是愚蠢的。不期望谷歌的工程师。他们还使类扩展了Object(默认情况下是java中的情况)
答案 1 :(得分:0)