美文网首页Android
Android @interface限制参数类型

Android @interface限制参数类型

作者: 12313凯皇 | 来源:发表于2019-04-16 22:52 被阅读3次

有些时候,我们会有一个需求,就是一个方法的参数只能是某些特定的值,以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限制参数类型

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