Android Studio限制常量参数

我们对外提供一个需要传递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后就只能使用我们定义的值的,如果不在定义范围内的值就会有相应的错误提示。

发表回复

CAPTCHAis initialing...