kotlin学习(9)注解
我们一般使用类和函数要说明类和函数的确切名称。调用一个类,你需要知道它定义在哪个类中,还有它的名称和参数的类型。
注解和反射可以给你超越这个规则的能力,让你编写出使用事先未知的任意类的代码。注解赋予这些类库特定的语义,而反射允许你在运行时分析这些类的结构。
应用注解
// 如@Test标记一个函数
class MyTest{
@Test
fun test(){
//TODO
}
}
注解只能拥有如下类型的参数:基本数据类型、字符串、枚举、类引用、其他的注解类。
//类作为注解实参,要在类名后加 ::class
@MyAnnotation(MyClass::class) //另一个注解作为注解实参,去掉@ 这里的ReplaceWith是一个注解
@Deprecated("Use removeAt(index) instead.",ReplaceWith("removeAt(index)"))
注解实参需要在编译期就是已知的,要把属性当做注解实参使用,需要用const修饰符标记它,来告知编译器这个属性是编译常量。
const val TEST_TIMEOUT = 100L
@Test(timeout = TEST_TIMEOUT) fun testMethod(){ }
用const标注的属性可以声明在一个文件的顶层或者一个object中,而且必须初始化为基本数据类型或者String类型的值。如果尝试使用普通类的属性作为注解实参,会报错。
注解目标
Kotlin源代码中的单个声明可能会对应成多个声明,比如Kotlin的属性就对应一个Java字段、一个getter、一个潜在的setter和它的参数。而且他们每一个都能携带注解。所以说明这些元素中哪些需要注解十分必要。
//这里Rule是注解名,get是点目标,代表应用到getter上,用冒号隔开它们
@get:Rule
使用注解定制JSON序列化
注解的一个经典用法之一就是定制化对象的序列化。
序列化就是一个过程,把对象转换成可以存储或者在网络上传输的二进制或者文本的表示法。
反序列化就是把这种表示法转换成一个对象。
最常见的一种序列化的格式就是JOSN
//序列化一个Person类
data class Person(val name:String, val age:Int) //把实例传给serialize函数,就会返回一个包含该实例json表示法的字符串
>>>val person = Person("Alice", 20)
>>>println(serialize(person))
{"age": 20, name: "Alice"} //反序列化取出一个对象
>>>val json=""" {"age": 20, name: "Alice"} """
>>>println(deserialize<Person>(json))
Person(name=Alice, age=29)
声明注解
annotation class JsonName(val name:String) 在class前加annotation,并且没有类主体i,不需要大括号。
元注解
注解类也可以被注解。应用在注解类上的注解被称为元注解。
链接:Java中的四个元注解
kotlin学习(9)注解的更多相关文章
- TestNG学习-002-annotaton 注解概述及其执行顺序
此文主要讲述用 TestNG 基础的 annotation (注解)知识,及其执行的顺序,并通过一个 TestNG 简单的实例演示 annotation 的执行顺序. 希望能对初学 TestNG 测试 ...
- Java学习:注解,反射,动态编译
狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! Java学习:注解,反射,动态编译 Annotation 注解 什么是注解 ? Annotat ...
- kotlin 学习感受
目录 kotlin 学习感受 特点 优点 屎一样的缺点 总结 kotlin 学习感受 直白的说..很不好,像屎一样,本来对此抱有很大的期望和好感度,但经过一整天的学习,完全失望了,这门语言中间有各种的 ...
- Kotlin 学习笔记(一)
(Kotlin 学习笔记的文档结构基本按照 Java 核心技术一书的目录排列) 基本程序设计结构 数据类型 数字 类型 宽度 Double 64 Float 32 Long 64 Int 32 Sho ...
- 2.学习SpringMVC注解入门篇
一.SpringMVC执行流程 . 二.创建项目学习SpringMVC注解 按照我之前的SpringMVC创建项目,首先创建一个项目springmvc01,配置好pom.xml,web.xml,spr ...
- Kotlin学习笔记(9)- 数据类
系列文章全部为本人的学习笔记,若有任何不妥之处,随时欢迎拍砖指正.如果你觉得我的文章对你有用,欢迎关注我,我们一起学习进步! Kotlin学习笔记(1)- 环境配置 Kotlin学习笔记(2)- 空安 ...
- 深入学习JAVA注解-Annotation(学习过程)
JAVA注解-Annotation学习 本文目的:项目开发过程中遇到自定义注解,想要弄清楚其原理,但是自己的基础知识不足以支撑自己去探索此问题,所以先记录问题,然后补充基础知识,然后解决其问题.记录此 ...
- Java学习之注解篇
Java学习之注解篇 0x00 前言 续上篇文章,这篇文章就来写一下注解的相关内容. 0x01 注解概述 Java注解(Annotation)又称Java标注,是JDK5.0约会的一种注释机制. 和J ...
- Kotlin学习快速入门(7)——扩展的妙用
原文地址: Kotlin学习快速入门(7)--扩展的妙用 - Stars-One的杂货小窝 之前也模模糊糊地在用这个功能,也是十分方便,可以不用继承,快速给某个类增加新的方法,本篇便是来讲解下Kotl ...
随机推荐
- node.js入门学习(六)--express
1.官网:http://expressjs.com/ 中文:http://www.expressjs.com.cn/ 2.HelloWorld 1)mkdir node-express-demo 2) ...
- JPA学习(五、JPA_二级缓存)
框架学习之JPA(五) JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中 ...
- 杨辉三角 x
杨辉三角是美丽的数学结晶,其结论往往多蕴含自然之美. ——以下内容均摘抄自题解. 例题: 洛谷P1762 偶数 正如这题所示,数据在n<=10^15的范围内则引导我们去寻找空间更节省,速率更高 ...
- Spring Cloud云架构 - commonservice-sso服务搭建(一)
前面几篇我们已经介绍了Spring Cloud和oauth2的知识点,今天我们要利用Spring Cloud和oauth2进行commonservice-sso服务搭建,本节我们只是搭建commons ...
- Unity PlayerPrefs 存储的位置
Mac OS 在Mac OS X上PlayerPrefs是存储在~/Library/Preferences文件夹,名为unity.[company name].[product name].plist ...
- Django REST framework 之 认证 权限 限制
认证是确定你是谁 权限是指你有没有访问这个接口的权限 限制主要是指限制你的访问频率 认证 REST framework 提供了一些开箱即用的身份验证方案,并且还允许你实现自定义方案. 接下类我们就自己 ...
- LInux 下PHP环境配置 Redis 总结
系统 Deepin ,环境 PHP7.0 + Apache2 安装 Redis 服务 sudo apt-get install redis-server //安装 sudo /etc/init.d/r ...
- __file__, sys._getframe().f_lineno 当前文件的行号
当前文件的行号 try: f = open(sys.argv[1], "rb") address_book.ParseFromString(f.read()) f.close()e ...
- 3,、maven修改jar包下载为国内镜像下载地址
maven 默认的中央仓库是在国外的服务器,下载速度慢,有时候稍不注意就下载出错 通常我将maven的中央仓库修改为阿里云的地址,下载速度很快体验非常好 修改conf下的setting.xml文件 在 ...
- tomcat打开失败原因
我重装系统以后,tomcat无法打开,原因是有的项目的虚拟路径有误 到server.xml下修改虚拟路径