1. 你的函数可以接受连续的数据

  2. 用于名称

  3. other…

4. 不使用枚举类型的解决方案

=================================================================================

既然使用枚举是因为参数的类型太泛了造成的类型不安全,那么我只要将参数限定在某一个类型集合里面

要将的@IntDef/@StringDef + @interface来进行限定参数

build.gradle 文件中添加依赖

dependencies {

compileOnly ‘com.android.support:support-annotations:25.1.0’

}

也可以使用对应的版本 compileOnly 是不会让 support-annotations 到下一个依赖库,如果想让下一个库依赖,请使用 api

特别的,如果是 app 出包,依赖必须使用 implementation

然后就可以使用注解帮助检查参数,代码如下

public class SexTest {

public final int MAN = 2;

public final int WOMEN = 3;

/**

  • 只能使用 {@link #MAN} {@link #WOMEN}

*/

@Documented // 表示开启Doc文档

@IntDef({

MAN,

WOMEN,

}) //限定为MAN,WOMEN

@Target({

ElementType.PARAMETER,

ElementType.FIELD,

ElementType.METHOD,

}) //表示注解作用范围,参数注解,成员注解,方法注解

@Retention(RetentionPolicy.SOURCE) //表示注解所存活的时间,在运行时,而不会存在 .class 文件中

public @interface Sex { //接口,定义新的注解类型

}

public void setSex(@Sex int sex){

this.sex = sex;

}

}

如果我们尝试在调用setSex()方法的时候,传入不在限定之内的值,那么编译就不会通过,有错误提示

同理,我们也可以使用@StringDef

public class FlagContants {

public static final String UNDEFINE = “undefine”;

public static final String OK = “ok”;

public static final String ERROR = “error”;

private @FlagDef

String flag = UNDEFINE;

@Documented // 表示开启Doc文档

@StringDef({

OK,

ERROR

}) //限定为 FlagContants.OK, FlagContants.ERROR

@Target({

ElementType.PARAMETER,

ElementType.FIELD,

ElementType.METHOD,

}) //表示注解作用范围,参数注解,成员注解,方法注解

@Retention(RetentionPolicy.SOURCE) //表示注解所存活的时间,在运行时,而不会存在 .class 文件中

public @interface FlagDef { //接口,定义新的注解类型

}

public @FlagDef

String getFlag() {

return flag;

}

public void setFlag(@FlagDef String flag) {

this.flag = flag;

}

}

5. AndroidStuido @*Def 模板

============================================================================================

自动模板,用于快速生产这种枚举类(智能模板不包括引包,引入包请手动,或者配置自动引入)

5.1 @IntDef 模板


  • 分组 Android

  • 名称 Abbreviation defInt

  • 描述 Description add Android IntDef Source block

  • Template text

@IntDef({

ENDENDEND

})

@Documented

@Target({

ElementType.FIELD,

ElementType.METHOD,

ElementType.PARAMETER,

})

@Retention(RetentionPolicy.SOURCE)

public @interface IntDefNameIntDefNameIntDefNameDef {

}

  • 生效范围 Application in Java:declaration

  • Edit variables

| Name | Expression | Default value | Skip if define |

| — | — | — | — |

| IntDefName | classNameComplete | | No |

5.2 @StringDef 模板


  • 分组 Android

  • 名称 Abbreviation defString

描述 Description add Android StringDef Source block

  • Template text

@StringDef({

ENDENDEND

})

@Documented

@Target({

ElementType.FIELD,

ElementType.METHOD,

ElementType.PARAMETER,

})

@Retention(RetentionPolicy.SOURCE)

public @interface StringDefNameStringDefNameStringDefNameDef {

}

  • 生效范围 Application in Java:declaration

  • Edit variables

| Name | Expression | Default value | Skip if define |

学习宝典

对我们开发者来说,一定要打好基础,随时准备战斗。不论寒冬是否到来,都要把自己的技术做精做深。虽然目前移动端的招聘量确实变少了,但中高端的职位还是很多的,这说明行业只是变得成熟规范起来了。竞争越激烈,产品质量与留存就变得更加重要,我们进入了技术赋能业务的时代。

不论遇到什么困难,都不应该成为我们放弃的理由!

很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从那里入手去学习,对此我针对Android程序员,我这边给大家整理了一套学习宝典!包括不限于高级UI、性能优化、移动架构师、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter等全方面的Android进阶实践技术;希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!

Android学习PDF+架构视频+面试文档+源码笔记

【Android核心高级技术PDF文档,BAT大厂面试真题解析】

【算法合集】

【延伸Android必备知识点】

4%B8%8D%E4%BC%9A%E8%BF%99%E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)

【Android核心高级技术PDF文档,BAT大厂面试真题解析】

[外链图片转存中…(img-Khej3HhB-1644908122679)]

【算法合集】

[外链图片转存中…(img-EGDZEZmt-1644908122680)]

【延伸Android必备知识点】

[外链图片转存中…(img-bwbYh0TY-1644908122680)]

【Android部分高级架构视频学习资源】

Android中少用枚举类(enum)而多用,泪目相关推荐

  1. java arraylist枚举器遍历_Java基础(七)泛型数组列表ArrayList与枚举类Enum

    一.泛型数组列表ArrayList 1.在Java中,ArrayList类可以解决运行时动态更改数组的问题.ArrayList使用起来有点像数组,但是在添加或删除元素时,具有自动调节数组容量的功能,而 ...

  2. java枚举类Enum入门理解

    目录 枚举的定义 JDK5.0之前只能自定义枚举类 自定义枚举类的理解: JDK5.0之后enum关键字定义枚举类 区别于自定义枚举类 enum的父类Enum的常用方法 toString方法和valu ...

  3. 【Java 枚举 集合】枚举类Enum、映射EnumMap、集EnumSet

    枚举Enum.映射EnumMap.集EnumSet 一.枚举Enum 1.概述 2.介绍 ① valueOf ② values 3.分析 ※ 模仿一个枚举类 二.枚举映射 EnumMap 1.概述 2 ...

  4. Kotlin 枚举类 enum

    枚举类就是一组命名的常数,是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内. 枚举类的最基本的用法是实现类型安全的枚举: enum class Direction {NORTH, SOUT ...

  5. java枚举类型数组_Java基础(七)泛型数组列表ArrayList与枚举类Enum

    一.泛型数组列表ArrayList 1.在Java中,ArrayList类可以解决运行时动态更改数组的问题.ArrayList使用起来有点像数组,但是在添加或删除元素时,具有自动调节数组容量的功能,而 ...

  6. java switch enum对象_Java枚举类(enum)5种常见用法和3种内部方法,详细附代码

    文章目录 Java枚举类(enum)重点用法和内部方法,附代码 一.Java 枚举类(enum) 详解5种常见的用法 1.常量 2.支持switch 3.向枚举中添加新方法 4.覆盖枚举的方法 5.实 ...

  7. Android中对话框的工具类

    Android中对话框的工具类,里面总结了比较好用的方法,直接调用即可 public class DialogUtils {private DialogUtils() {}private static ...

  8. java switch枚举类,使用枚举类enum代替switch

    使用枚举类enum代替switch 使用枚举类,能大大减少switch的代码量,提高代码阅读性 public enum TestEnum { stu1("小明", "一班 ...

  9. mysql查询枚举类型转换_zendframework获取数据库中枚举类enum的数据并将其转换成数组...

    在model中建立这样的模型,在其中写入获取枚举类的方法 请勿盗版,转载请加上出处http://blog.csdn.net/yanlintao1 class Student extends Zend_ ...

最新文章

  1. ipad如何连接电脑_超能办公课堂丨电脑如何使用无线网络连接方式安装驱动程序...
  2. 第五篇: mysqlduomp 实时增量备份、innobackupex(完全备份与 恢复、增量备份与恢复)
  3. asp.net mvc中用 log4net记录日志到数据库中
  4. IdentityServer4之JWT签名(RSA加密证书)及验签
  5. springcloud feign 服务调用其他服务_微服务实战——SpringCloud与Feign集成
  6. 熬了整整30天,java递归阶乘求和
  7. 贝叶斯、概率分布与机器学习
  8. GCC编译的几个步骤
  9. 广州的11个辖区_13张地形图,快速了解广东省广州市的11个市辖区
  10. 利用Thumbnilator对图片加文字水印
  11. python 网络编程模块_详细介绍Python网络编程模块
  12. golang操作elasticsearch(oliver/elastic使用文档)
  13. Java 基础学习之字符串的简单操作和适配器设计模式
  14. Picosmos 一键智能抠图
  15. 科技爱好者周刊:第 90 期
  16. CTF--2016中国西安西电华山杯网络安全技能大赛之crackme6
  17. 如何使用HbuilderX运行小程序项目
  18. qt + osg 根据高程变色之 渐变色
  19. 【图文教程】如何使用USB及wubi安装ubuntu11.10
  20. 签约喜讯|国盛智科携手瑞云服务云,推动数字化营销服务管理战略升级

热门文章

  1. Inno Setup Compiler卸载时删除注册表
  2. 【强化学习知识】强化学习简介
  3. Linux下的tty和pts详解
  4. mt6735 设置情景模式为会议或静音后拔掉电池,首次开机仍有开机铃声
  5. stm32f407VET6 系统学习 day08 利用adc 模数转换 监控光敏电阻。
  6. weather中国气象网的天气城市编码获取地址
  7. 工程管理系统源码-物料管理-工程项目管理系统-建筑施工管理软件
  8. 强连通分量(Tarjan算法) 图解
  9. 数据结构题 3(一元多项式计算器)
  10. python二次拟合_三维数据点的二次曲面拟合