-
你的函数可以接受连续的数据
-
用于名称
-
other…
=================================================================================
既然使用枚举是因为参数的类型太泛了造成的类型不安全,那么我只要将参数限定在某一个类型集合里面
要将的@IntDef
/@StringDef
+ @interface
来进行限定参数
build.gradle 文件中添加依赖
dependencies {
compileOnly ‘com.android.support:support-annotations:25.1.0’
}
也可以使用对应的版本 compileOnly 是不会让 support-annotations 到下一个依赖库,如果想让下一个库依赖,请使用 api
特别的,如果是 app 出包,依赖必须使用 implementation
然后就可以使用注解帮助检查参数,代码如下
public class SexTest {
public final int MAN = 2;
public final int WOMEN = 3;
/**
- 只能使用 {@link #MAN} {@link #WOMEN}
*/
@Documented // 表示开启Doc文档
@IntDef({
MAN,
WOMEN,
}) //限定为MAN,WOMEN
@Target({
ElementType.PARAMETER,
ElementType.FIELD,
ElementType.METHOD,
}) //表示注解作用范围,参数注解,成员注解,方法注解
@Retention(RetentionPolicy.SOURCE) //表示注解所存活的时间,在运行时,而不会存在 .class 文件中
public @interface Sex { //接口,定义新的注解类型
}
public void setSex(@Sex int sex){
this.sex = sex;
}
}
如果我们尝试在调用setSex()方法的时候,传入不在限定之内的值,那么编译就不会通过,有错误提示
同理,我们也可以使用@StringDef
public class FlagContants {
public static final String UNDEFINE = “undefine”;
public static final String OK = “ok”;
public static final String ERROR