美文网首页Android
int flags的妙用

int flags的妙用

作者: 红与树 | 来源:发表于2019-03-19 17:59 被阅读0次

引言

很多android源码中有一个int flags;定义形式的变量,还有与之相对应的一系列常量,这种flag分类方式应该可以用在任何语言中。

原理

int flags定义包含的flag,可能有多个,这是需求。
而一个int型的值(当然也可以是其他类型,原理一样)在java里表示4 byte也就是32 bit,除去符号位剩下31个标志位可以表示31个单独的flag,他们相或可以生成更多的flags值。

例子

用1进行左移操作可以方便生成不同的flag如下:
public static final int FLAG1= 1<<0;
public static final int FLAG2 = 1<<2;
。。。
public static final int FLAG31 = 1<<31;
相或如
public static final int FLAGa = FLAG3|FLAG5|FLAG8 ;
当需要判断时:
flags = FLAGX1 |FLAGX2;
//若flags的相或item包含FLAGX 则与其相与刚好得到FLAGX
if((flags&FLAGX ) == FLAGX ){
//说明包含FLAGX 属性
}
简单封装成函数:
public boolean hasFeature(int feature){
if((flags&feature) == feature) return true;
return false;
}

相关文章

网友评论

    本文标题:int flags的妙用

    本文链接:https://www.haomeiwen.com/subject/okunmqtx.html