美文网首页
Android 注解约束参数

Android 注解约束参数

作者: 颤抖的闪电 | 来源:发表于2018-07-26 09:56 被阅读0次

    首先建立一个@Environment注解,在里面定义6个字符串常量,即不同的环境。

    public @interface Environment {
        /**
         * 正式环境http
         */
    
        public static final String RELEASE_HTTP = "http://gw.release.domain.com";
        /**
         * 预发环境http
         */
        public static final String PRE_HTTP = "http://gw.pre.domain.com";
        /**
         * 测试环境http
         */
        public static final String DAILY_HTTP = "http://gw.daily.domain.com";
        /**
         * 正式环境https
         */
        public static final String RELEASE_HTTPS = "https://gw.release.domain.com";
        /**
         * 预发环境https
         */
        public static final String PRE_HTTPS = "https://gw.pre.domain.com";
        /**
         * 测试环境https
         */
        public static final String DAILY_HTTPS = "https://gw.daily.domain.com";
    }
    

    然后在该注解上加上@StringDef注解,约束为定义的6个常量

    @StringDef({Environment.RELEASE_HTTP, Environment.PRE_HTTP, Environment.DAILY_HTTP, Environment.DAILY_HTTPS, Environment.PRE_HTTPS, Environment.RELEASE_HTTPS})
    

    为了让注解只在源码级别存在,我们还需要加入下面的元注解

    @Retention(RetentionPolicy.SOURCE)
    

    最后就是修改设置环境的代码,在其入参上加入注解限制。

    private String environment;
    
    public void setEnvironment(@Environment String environment) {
        this.environment = environment;
    }
    

    这时候,如果你使用的不是注解约束的6个环境,那么就会报一个提示,并且是红色的下划线,提示你这里需要修改。


    image.png

    于是你必须像这么使用

    core.setEnvironment(Environment.DAILY_HTTP);
    core.setEnvironment(Environment.PRE_HTTP);
    core.setEnvironment(Environment.RELEASE_HTTP);
    core.setEnvironment(Environment.DAILY_HTTPS);
    core.setEnvironment(Environment.PRE_HTTPS);
    core.setEnvironment(Environment.RELEASE_HTTPS);     
    

    这样以来,在一定程度上能起到约束作用。But,如果你无视了该警告,编译仍然是可以通过的哟~,这一点需要特别注意哦。

    感谢
    Android 从枚举到注解最佳实践
    具体用例可看
    注解的简单用例

    相关文章

      网友评论

          本文标题:Android 注解约束参数

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