gpt4 book ai didi

java - BitmapFactory.Options 中没有封装

转载 作者:行者123 更新时间:2023-12-02 10:07:17 25 4
gpt4 key购买 nike

在研究 Android 的 BitmapFactory.Options 类时,我注意到它的字段是公开可以访问和修改的。

这与一般封装规则相反,该规则规定字段应声明为 private,并且应通过 public getter/setter 方法来访问/修改它们。这样我们就可以控制客户端如何访问我们类的字段。

这让我想知道我是否误解了封装概念。在编写自己的类时,在哪些情况下我可以忽略封装,就像在 BitmapFactory.Options 中忽略封装一样?

<小时/>

有人可能会争辩说,当获取/设置字段值不需要限制时,封装是不必要的。但我认为 BitmapFactory.Options 的情况并非如此,因为,例如 BitmapFactory.Options.inSampleSize应该是 2 的幂:

the decoder uses a final value based on powers of 2, any other value will be rounded down to the nearest power of 2.

因此,开发人员可以声明一个 setter 方法

  • 拒绝不是 2 的幂的值;或
  • 在将给定值传递给解码器之前,将其四舍五入到最接近的 2 次方。

最佳答案

Javadoc 对于 inSampleSize 的说法是

Also, powers of 2 are often faster/easier for the decoder to honor.

这意味着 class 作者将向其分配哪个值的决定委托(delegate)给您。
没有指出其他值不起作用,只是由于舍入阶段,它们不会高效。可能存在必须分配非二次方数字的用例。

通过查看内部静态类,我发现没有理由使用 getters/setters 封装。
它们是不必要和多余的,就像许多“尊重”JavaBean 风格的类一样。

当您可以拥有 50 名NLOC 类(class)时,为什么还要开设 500 名NLOC 类(class)呢?保持简单。

关于java - BitmapFactory.Options 中没有封装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55259534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com