楼主误会了吧?这里不是用位运算还是Boolean来做检测条件的问题,而是判断flag所处状态的问题。
具体说:
 VISIBLE = 1 ; // 0001 
 DRAGGABLE = 2; // 0010
 SELECTABLE = 4; // 0100
 EDITABLE = 8; // 1000
也就是说flag变量的第 0、1、2、3(从右往左数)分别表征VISIBLE、DRAGGABLE、SELECTABLE和EDITABLE的属性。对应位为1则表征有具有该属性,为0表征不具有该属性。
比如
 flag = 1 ;// 0001 只具有VISIBLE属性 (flag | VISIBLE) = VISIBLE
 flag = 3 ;// 0011 具有VISIBLE和DRAGGABLE属性 (flag | VISIBLE ) = VISIBLE
           //                                  (flag | DRAGGBLE) = DRAGGBLE
 flag = 0 ;// 四个属性都不具备