Android 注解约束参数

2018-07-26  本文已影响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 从枚举到注解最佳实践
具体用例可看
注解的简单用例

上一篇下一篇

猜你喜欢

热点阅读