在读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;
的变量,那内存使用的优势又不复存在了,不知道作者是何用意
希望哪位能帮我解答