Android @interface限制参数类型

有些时候,我们会有一个需求,就是一个方法的参数只能是某些特定的值,以View为例,它的setVisibility方法中就只能传入VISIBLEINVISIBLEGONE这三个参数。下面来看一下其实现方法:

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类型。

你可能感兴趣的:(Android @interface限制参数类型)