现在的位置: 首页 > 综合 > 正文

用 int 类型存储状态,类似于单片机中的状态字 PWD

2013年07月06日 ⁄ 综合 ⁄ 共 478字 ⁄ 字号 评论关闭

在读Swing源代码的过程中,看到了它的一个写法

用于保持状态的不是boolean,而是用int变量的各位,形式如下

 private void setFlag(int aFlag, boolean aValue) {
  if (aValue) {
   flags |= (1 << aFlag);
  } else {
   flags &= ~(1 << aFlag);
  }
 }

其中,传入的aFlag 的值为类似

private static final int INHERITS_POPUP_MENU = 23;

这样就将boolean保存二态性的状态转为用int保存

联想:

一个boolean型的变量在规范中没有规范大小,但是参考中说明一般用int型表示

那么如果声明32个boolean变量,占用空间 很可能是 32 * 4 个字节

如果用Swing中的表示形式,虽然32个boolean需要表示的状态用一个int表示了

但是,为此需要付出的代价是定义32个类似

private static final int INHERITS_POPUP_MENU = 23;

的变量,那内存使用的优势又不复存在了,不知道作者是何用意

希望哪位能帮我解答

抱歉!评论已关闭.