Android @Intdef 用于标记如何使用它

Android @Intdef for flags how to use it

我不清楚如何使用 @Intdef 将它设为这样的标志:

@IntDef(
  flag = true
  value = {NAVIGATION_MODE_STANDARD, NAVIGATION_MODE_LIST, NAVIGATION_MODE_TABS})

此示例直接来自 docs。这到底是什么意思?这是否意味着所有这些最初都设置为 true ?如果我对以下内容执行 "or":

NAVIGATION_MODE_STANDARD | NAVIGATION_MODE_LIST

这是什么意思...我对这里发生的事情有点困惑。

使用 IntDef#flag() 属性设置为 true,可以组合多个常量。

用户可以将允许的常量与标志(例如 |、&、^ )结合起来。

例如:

public static final int DISPLAY_OP_1 = 1;
public static final int DISPLAY_OP_2 = 1<<1;
public static final int DISPLAY_OP_3 = 1<<2;

@IntDef (
    flag=true,
    value={
            DISPLAY_OP_1,
            DISPLAY_OP_2,
            DISPLAY_OP_3
    }
)

@Retention(RetentionPolicy.SOURCE)
public @interface DisplayOptions{}

public void setIntDefFlag(@DisplayOptions int ops) {
    ...
}

并使用 setIntDefFalg() 和“|”

setIntDefFlag(DisplayOptions.DISPLAY_OP1|DisplayOptions.DISPLAY_OP2);