美文网首页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