有些时候,我们会有一个需求,就是一个方法的参数只能是某些特定的值,以View
为例,它的setVisibility
方法中就只能传入VISIBLE
、INVISIBLE
和GONE
这三个参数。下面来看一下其实现方法:
public static final int VISIBLE = 0x00000000;
public static final int INVISIBLE = 0x00000004;
public static final int GONE = 0x00000008;
@IntDef({VISIBLE, INVISIBLE, GONE})
@Retention(RetentionPolicy.SOURCE)
public @interface Visibility {}
其中@Retention
表明注解的生命周期,有三种可选项:
-
RetentionPolicy.SOURCE
:在原文件中有效,被编译器丢弃。 -
RetentionPolicy.CLASS
:在class文件有效,可能会被虚拟机忽略。 -
RetentionPolicy.RUNTIME
:在运行时有效。
@IntDef
就很好理解了,就是这些值是int
类型的,除此之外还有@StringDef
、@LongDef
分别表示String
类型和Long
类型。
网友评论