1.优点

  可以代替枚举,静态常量,可以让注解只在代码中存在,编译后就删除,可以省内存。

2.@IntDef

2.1 官网

  https://developer.android.com/reference/kotlin/androidx/annotation/IntDef.html

2.2 java示例

     //1.指定注解的保留策略,RetentionPolicy.SOURCE表示只保留源码中,编译时删除。还有CLASS和RUNTIME
@Retention(RetentionPolicy.SOURCE) //2.定义int 值 ,
//写法1: flag true表示可以用 MODE_STANDARD|MODE_LIST 或者 MODE_LIST & MODE_TABS 这种方式使用,然并卵 ,默认false
@IntDef(flag = true,value = {MODE_STANDARD, MODE_LIST, MODE_TABS})
//写法2:
//@IntDef({MODE_STANDARD, MODE_LIST, MODE_TABS}) //3.定义注解类型
public @interface MODE {
int MODE_STANDARD = ; //默认是 public static final
int MODE_LIST = ;
int MODE_TABS = ;
} //4.使用注解 示例
@MODE int getMode() { return MODE_STANDARD; }
void setMode(@MODE int m) { mode = m; }
int mode;
void testMode(){
int m1 = MODE_LIST;
int m2 = getMode();
setMode(m1);
m2 = getMode(); m2 = m1 | MODE_LIST & MODE_TABS ; }

2.3 kotlin示例

     //1.指定注解的保留策略,AnnotationRetention.SOURCE表示只保留源码中,编译时删除。还有CLASS和RUNTIME
@Retention(AnnotationRetention.SOURCE)
//2.定义int 值 ,
@IntDef(flag = true, value = [MODE_STANDARD, MODE_LIST, MODE_TABS])
//3.定义注解类型
annotation class MODE {
companion object {
const val MODE_STANDARD =
const val MODE_LIST =
const val MODE_TABS =
}
}
//4.使用注解 示例
fun resetMode(@MODE m: Int) {
mode = m
}
var mode: Int = fun testMode() {
val m1 = MODE_LIST resetMode(m1) var m2 = m1 or (MODE_LIST and MODE_TABS) }

3.@StringDef

3.1 官网

https://developer.android.com/reference/androidx/annotation/StringDef.html?hl=en

3.2 java示例

     //1.指定注解的保留策略,RetentionPolicy.SOURCE表示只保留源码中,
@Retention(RetentionPolicy.SOURCE) //2.定义string值 ,它必需在 注解类型 前。
@StringDef({CMD_A8, CMD_E5, CMD_H3}) //3.定义注解类型,
public @interface CMD {
public static final String CMD_A8 = "A8";
public static final String CMD_E5 = "E5";
public static final String CMD_H3 = "H3";
}
//4.使用
void sendData(@CMD String cmd,String data){
//... connect socket ,
// socket.send
}
//5.测试
void testStringDef(){
//sendData("cmd","data");//error ,"cmd"不是 定义的那几个值中的一个。
sendData(CMD_A8,"hello");
}

3.3 kotlin示例

     //1.指定注解的保留策略,AnnotationRetention.SOURCE表示只保留源码中,
@Retention(AnnotationRetention.SOURCE)
//2.定义string值 ,它必需在 注解类型 前。
@StringDef(A8,E5,H9)
//3.定义注解类型,
annotation class CMD {
companion object {
const val A8 = "A8"
const val E5 = "E5"
const val H9 = "H9"
}
} //4.使用
fun sendData(@CMD cmd: String, data: String) {
//... connect socket ,
// socket.send
} //5.测试
fun testStringDef() {
sendData("cmd","data");//error ,"cmd"不是 定义的那几个值中的一个。
sendData(A8, "hello")
}

常用注解@Intdef与@Stringdef的更多相关文章

  1. Spring系列之Spring常用注解总结

    传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点:1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml文件 ...

  2. SpringMVC常用注解實例詳解3:@ResponseBody

    我的開發環境框架:        springmvc+spring+freemarker開發工具: springsource-tool-suite-2.9.0JDK版本: 1.6.0_29tomcat ...

  3. SpringMVC常用注解實例詳解2:@ModelAttribute

    我的開發環境框架:        springmvc+spring+freemarker開發工具: springsource-tool-suite-2.9.0JDK版本: 1.6.0_29tomcat ...

  4. Spring常用注解汇总

    本文汇总了Spring的常用注解,以方便大家查询和使用,具体如下: 使用注解之前要开启自动扫描功能 其中base-package为需要扫描的包(含子包). <context:component- ...

  5. Spring常用注解,自动扫描装配Bean

    1 引入context命名空间(在Spring的配置文件中),配置文件如下: xmlns:context="http://www.springframework.org/schema/con ...

  6. springmvc常用注解与类型转换

    springmvc常用注解与类型转换 一:前置 spring -servlet.xml 注入 <!-- 启用spring mvc 注解 --> <context:annotation ...

  7. SpringMVC常用注解,返回方式,路径匹配形式,验证

    常用注解元素 @Controller 标注在Bean的类定义处 @RequestMapping 真正让Bean具备 Spring MVC Controller 功能的是 @RequestMapping ...

  8. SpringMVC 常用注解

    本文参考了博客,具体请见:http://www.cnblogs.com/leskang/p/5445698.html Spring MVC的常用注解 1.@Controller @Controller ...

  9. spring注解开发中常用注解以及简单配置

    一.spring注解开发中常用注解以及简单配置 1.为什么要用注解开发:spring的核心是Ioc容器和Aop,对于传统的Ioc编程来说我们需要在spring的配置文件中邪大量的bean来向sprin ...

随机推荐

  1. SpringBoot之Quartz实战

    说明:由于上篇文章我们已经讨论过springboot整合Quartz及相关配置,本次我们只说明Qrtz的增.删.改.启动.停止相关api的使用,其中涉及的其他技术,如:mybatisplus等技术以后 ...

  2. Pytorch Autograd (自动求导机制)

    Pytorch Autograd (自动求导机制) Introduce Pytorch Autograd库 (自动求导机制) 是训练神经网络时,反向误差传播(BP)算法的核心. 本文通过logisti ...

  3. 2020牛客多校第八场K题

    __int128(例题:2020牛客多校第八场K题) 题意: 有n道菜,第i道菜的利润为\(a_i\),且有\(b_i\)盘.你要按照下列要求给顾客上菜. 1.每位顾客至少有一道菜 2.给顾客上菜时, ...

  4. Python | 常见的反爬及解决方法,值得收藏

    我们都知道Python用来爬数据,为了不让自家的数据被别人随意的爬走,你知道怎么反爬吗?今天播妞带着大家一起见识见识常见的反爬技术. 很多人学习python,不知道从何学起.很多人学习python,掌 ...

  5. python分析BOSS直聘的某个招聘岗位数据

    前言 毕业找工作,在职人员换工作,离职人员找工作……不管什么人群,应聘求职,都需要先分析对应的招聘岗位,岗位需求是否和自己匹配,常见的招聘平台有:BOSS直聘.拉钩招聘.智联招聘等,我们通常的方法都是 ...

  6. spring data jpa 之 通用接口

    园主这一阵子接到一个需求,就是将spring data jpa再进行封装,实现通过调用一个baseRepository,来实现每个类的增删改查操作,结合spring data jpa 原有的便捷操作, ...

  7. 菊长说丨一文读懂MySQL4种事务隔离级别

    经常提到数据库的事务,那你知道数据库还有事务隔离的说法吗,事务隔离还有隔离级别,那什么是事务隔离,隔离级别又是什么呢?今天我们就找菊长去,请他帮大家梳理一下这些各具特色的事务隔离级别,咱走着~~~ 点 ...

  8. 2020-06-21:ZK的哪些基础能力构建出了哪些上层应用?

    福哥答案2020-06-21: 福哥口诀法:数负命Ma集配分(使用场景:数据发布订阅.负载均衡.命名服务.Master 选举.集群管理.配置管理.分布式队列和分布式锁) 数据发布订阅:dubbo的rp ...

  9. 题解 BZOJ4709

    题目描述 一道简单DP优化调了好久qwq 首先分析题目,发现每次从一边取贝壳是完全没用的,此题本质就是将区间分成数个区间,使区间价值和最大. 可以发现一个性质,那就是最优解的每个区间的两端点一定相同且 ...

  10. Android 重写物理返回键,在h5页面中返回上一个界面

    实现:Activity中放置webview,跳转到h5界面,点击返回键,不退出h5界面,而是返回上一个h5界面 /** * 改写物理按键--返回的逻辑,希望浏览的网页后退而不是退出浏览器 * @par ...