美文网首页
Kotlin注解

Kotlin注解

作者: xu_pan | 来源:发表于2020-10-19 20:15 被阅读0次

定义注解

//和一般的声明很类似,只是在class前面加上了annotation修饰符

@Target(AnnotationTarget.ClASS)
@Retation(AnotationRention.SOURCE)
annotation class ApiDoc(val value:String)

注解使用

@ApiDoc("修饰类")
class Box{
    //@ApiDoc("修饰字段")
    val size = 6
    //@ApiDoc("修饰方法")
    fun test(){
        
    }
}

Kotlin的元注解

  • @Target:定义注解能够应用于哪些目标对象 (CLASS,FUNCTION,PROPERTY...)
  • @Rentention:注解的保留期(SOURCE,BINARY,RUNTIME)
  • @Repeatable:标记的注解可以多次应用于相同的声明或类型
  • @MustBeDocumented:修饰的注解奖被文档工具提取到Api文档中

注解的使用场景

  • 提供给编译器,编译器可以利用注解处理一些警告信息,错误等
  • 编译阶段时处理:利用注解信息来生成一些代码,在Kotlin深层代码非常常见,一些内置的注解为了与java api的互操作性,往往借助注解在编译阶段生成一些额外的代码
  • 运行时处理:某些注解可以在程序运行时,通过反射机制获取注解信息来处理一些程序逻辑

注解实践小案例

fun main(args:Array<String>){
    fire(ApiGetArticles())
}

/**
 * Kotlin注解实战案例:
 * 自定义注解实现API调用时的请求方法检查
 */

enum class Method{
    GET,
    POST
}

@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.RUNTIME)
annotation class HttpMethod(val method:Method)

interface Api{
    val name:String
    val version:String
        get() = "1.0"
}

@HttpMethod(Method.GET)
class ApiGetArticles:Api{
    override val name: String
        get() = "/api.articles"
}

fun fire(api:Api){
    val annotations = api.javaClass.annotations
    //api.javaClass.getField("set").annotations 获取属性的注解是这样么?
    val method = annotations.find { it is HttpMethod } as? HttpMethod;
    print("通过注解得知该接口需要通过 ${method?.method}方式请求")
}

//参考文章 https://blog.csdn.net/zx_android/article/details/106236304

相关文章

  • Kotlin注解入门

    Kotlin使用annotation class关键字来定义注解。 一、定义注解 Kotlin不允许为注解定义注解...

  • Kotlin使用注解

    Kotlin的反射也提供了一些支持注解的API。 一、提取注解信息 Kotlin使用kotlin.Annotion...

  • Kotlin元注解

    Kotlin在kotlin.annotation包下提供了4个Meta注解(元注解),这4个元注解都用于修饰其他的...

  • Kotlin 注解的使用目标(Use-site Target)问

    Kotlin 注解的使用目标(Use-site Target)问题 在测试kotlin的注解的时候发现了些许问题 ...

  • Kotlin 注解

    Kotlin 的注解完全兼容 Java 的注解。 声明注解 可以通过向注解类添加元注解(meta-annotati...

  • 正确理解Kotlin中@JvmOverloads、@JvmSta

    看注解的名字就知道,这是kotlin 为了让Java更好的使用kotlin 编码而写的注解。 一 、@JvmOve...

  • Kotlin 学习笔记--Kotlin@JvmOverloads

    Kotlin 学习笔记--Kotlin@JvmOverloads 注解 这是一个Kotlin系列的教程,目的是为了...

  • Kotlin注解

    定义注解 注解使用 Kotlin的元注解 @Target:定义注解能够应用于哪些目标对象 (CLASS,FUNCT...

  • kotlin-spring-data-jpa 开发脚手架

    1. 基本常用类: 注解 自定义kotlin注解自定义日志切面注解@Log,获取当前用户注解@CurrentUse...

  • 25.Kotlin注解详解

    Kotlin注解详解 注解声明注解是将元数据附加到代码的方法。要声明注解,请将 annotation 修饰符放在类...

网友评论

      本文标题:Kotlin注解

      本文链接:https://www.haomeiwen.com/subject/mgelmktx.html