我们对外提供一个需要传递int常量的方法,大部分时候是不希望调用者瞎传值进来的,虽然可以使用枚举进行限制,但是有些时候就是希望得到的值为int。列如以下Android代码:
LinearLayout mMenuGroup = new LinearLayout(getContext());
mMenuGroup.setOrientation(LinearLayout.HORIZONTAL);
setOrientation
虽然是int参数方法,但是只能使用LinearLayout.HORIZONTAL
或者LinearLayout.VERTICAL
否则Android Studio会进行报错。通过简单分析我们可以按照以下方式实现:
package top.foxhome.demo
//导入相关类
import android.support.annotation.IntDef;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
public class FoxHomeTopName {
...
@IntDef({LEVEL_0, LEVEL_1, LEVEL_2, LEVEL_3, LEVEL_4, LEVEL_5})
@Retention(RetentionPolicy.SOURCE)
public @interface Level {
}
//定义相关常量
public final static int LEVEL_0 = 0;
public final static int LEVEL_1 = 1;
public final static int LEVEL_2 = 2;
public final static int LEVEL_3 = 3;
public final static int LEVEL_4 = 4;
public final static int LEVEL_5 = 5;
...
/**
* 定义相关方法
*/
protected void setLevel(@Level int level) {
}
}
我们在调用setLevel后就只能使用我们定义的值的,如果不在定义范围内的值就会有相应的错误提示。