Kotlin 注解

定义

注解使用annotation关键字定义,且只能用于普通类,该类被称为注释类。可以使用@注释类为某个变量、函数、类、接口等注释。与我们写的代码注释类似,注释类可以指明被标注类的状态、作用等等(注解一般是在代码检查、编译时使用,非专业人士了解一下即可,会用就行)。

// 定义注解
annotation class MyAnnotation()


// 标注变量(无论写在同一行还是换行都行)
@MyAnnotation val name = "Kotlin"

// 标注函数
@MyAnnotation
fun getName() = name


// 标注 lambda 函数
val myLambda = @MyAnnotation {
    
}


// 标注主构造函数(需要给出 constructor 关键字)
class MyClazz @MyAnnotation constructor()


// 标注 getter
val kVersion
    @MyAnnotation
    get() = "2.0.0"


// 标注类
@MyAnnotation
class MyClass


// 标注接口
@MyAnnotation
interface MyInterface

注解类中**不能声明成员(变量或方法),但可以在构造函数处声明成员变量。
如果注解类构造函数有参数,在标注时可以传入:

annotation class MyAnnotation(val name: String)


@MyAnnotation("MyClass")
class MyClass

注解类的注解

可以对注解类进行注解标记,以满足我们的需求(以下这些注解只能用于标注注解类)。

  • @Target用于指定可被注解类标记的类型,可以传入0个(此时无法标注)或多个枚举类AnnotationTarget的值。
    // 指定只能对类别名 typealias 使用
    @Target(AnnotationTarget.TYPEALIAS)
    annotation class MyAnnotation()
    
    
    @MyAnnotation typealias Anything = Any
    
    
    // @MyAnnotation 此时不能标记 MyClass
    class MyClass
    
  • @Retention指定该注解是否存在于编译后的 class 文件中和是否在运行时反射可见,默认都为true(非专业人士表示不懂)。
  • @Repeatable指定该注解可以多次用于同一目标。默认为false
  • @MustBeDocumented指明该注解是公共 API(public API)并且在生成 API(generated API)的类或方法标签名中应该说明(非专业人士)。

标注目标声明

当我们标注时,可以声明被标注的目标:

annotation class MyAnnotation


// 标注 setter
@set:MyAnnotation
var name = "Kotlin"

可以使用的目标声明有:

  • file
  • property
  • field
  • get
  • set
  • receiver
  • param
  • setparam
  • delegate

相关推荐

  1. Kotlin 注解

    2024-06-08 03:14:02       12 阅读
  2. kotlin注解

    2024-06-08 03:14:02       34 阅读
  3. Kotlin:@JvmOverloads注解

    2024-06-08 03:14:02       16 阅读
  4. Kotlin注解简介

    2024-06-08 03:14:02       11 阅读
  5. kotlin 注解 @Parcelize 使用

    2024-06-08 03:14:02       14 阅读
  6. kotlin使用validation注解无效

    2024-06-08 03:14:02       19 阅读
  7. Kotlin注解 @JvmOverloads 的作用

    2024-06-08 03:14:02       34 阅读
  8. Kotlin语法入门-自定义注解(7)

    2024-06-08 03:14:02       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-08 03:14:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-08 03:14:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-08 03:14:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-08 03:14:02       18 阅读

热门阅读

  1. Android14 WMS-Power键短按流程

    2024-06-08 03:14:02       6 阅读
  2. LeetCode 4 - 寻找两个正序数组的中位数

    2024-06-08 03:14:02       8 阅读
  3. redis7.0.x与mysql8.0.x离线docker镜像制作

    2024-06-08 03:14:02       9 阅读
  4. 汇编指令——ARM Cortex-M指令分析

    2024-06-08 03:14:02       7 阅读
  5. C语言HTTP编程:深入探索与实战应用

    2024-06-08 03:14:02       10 阅读
  6. 【Vue】sync修饰符

    2024-06-08 03:14:02       9 阅读
  7. springboot获取当前数据库连接

    2024-06-08 03:14:02       10 阅读
  8. Lambda表达式与函数式接口

    2024-06-08 03:14:02       8 阅读