首页 / JAVA / Java学习 使用注解将参数的值限定
Java学习 使用注解将参数的值限定
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java学习 使用注解将参数的值限定,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1719字,纯文字阅读大概需要3分钟。
内容图文
![Java学习 使用注解将参数的值限定](/upload/InfoBanner/zyjiaocheng/648/3c8f491e362141398193f5f24d19441f.jpg)
前言
在Java的开发中,我们经常需要输入一些int或者String类型的值,而这些值可能仅仅用于代表状态或者类别。但是我们只希望这个参数的值输入0 到 5 这个范围的值,如果多输入大了我们的代码上并没有定义这些大于这些值的操作。 所以我们需要进行限制。 一般情况下我们可以使用枚举enum。 但是,个人经常在折腾Android开发,而Android并不推荐使用enum,因为特别容易activity被持有导致内存泄漏。 所以,我们只能参考用注解的方式限定一些值。
代码部分
方式1 :
比较推荐使用这个方式
首先创建一个接口设置一些常量,我们将限定只使用这个接口里的值:
public interface Level { int LEVEL_V = 1; int LEVEL_D = 2; int LEVEL_I = 3; int LEVEL_W = 4; int LEVEL_E = 5; }
然后创建注解类,使用@IntDef
//@Retention表示这个注解保留的范围,SOURCE=注解将被编译器编译的时候丢弃,不在代码运行时存在,这个注解只是希望IDE警告限定值的范围并不需要保留到VM或者运行时 @Retention(SOURCE) //@Target 这个注解需要使用的地方 PARAMETER=注解将被使用到方法的参数中 @Target({PARAMETER}) //显式声明被定义的整数值,除了@IntDef还有@LongDef @StringDef等等 @IntDef(value = {Level.LEVEL_V, Level.LEVEL_D, Level.LEVEL_I, Level.LEVEL_W, Level.LEVEL_E}) public @interface LogLevel { }
然后使用我们创建的这个LogLevel注解
public void setLogLevel(@LogLevel int level){ this.level = level; }
然后我们看看效果,我们这里随便输入一个整数值,可以看到Android studio 已经警告了,告诉我们只能在下面的值中选择。
输入正确后就没有提示警告了。
方式2 :
这是一个更简单暴力的方式,直接在注解里写入常量,因为注解类本身其实也是一个接口。然后声明自己的常量
@Retention(SOURCE) @Target({PARAMETER}) @IntDef(value = {LogLevel.LEVEL_V, LogLevel.LEVEL_D, LogLevel.LEVEL_I, LogLevel.LEVEL_W, LogLevel.LEVEL_E}) public @interface LogLevel { int LEVEL_V = 1; int LEVEL_D = 2; int LEVEL_I = 3; int LEVEL_W = 4; int LEVEL_E = 5; }
end
内容总结
以上是互联网集市为您收集整理的Java学习 使用注解将参数的值限定全部内容,希望文章能够帮你解决Java学习 使用注解将参数的值限定所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。