• Kotlin注解深入解析与实例剖析


    在上一次https://www.cnblogs.com/webor2006/p/11522798.html中学习了Kotlin注解相关的东东,这次继续对Kotlin的注解继续学习:

    注解也可以拥有自己的构造方法,并且构造方法也可以接收参数,注解构造方法所允许的参数类型:

    1、与Java原生类型所对应的类型(Int, Long..)

    2、字符串:string

    3、classes (MyClass::class)

    4、枚举:enums

    5、其他的注解

    6、上述类型的数组类型

    下面看下代码:

     

    接着再来定义一个,可以将一个注解做为另一个注解的构造参数:

    Kotlin的注解参数是不允许为可空类型的,因为JVM不支持以null的形式存储注解属性值的。如果某个注解被用作其他注解的参数,那么其名字就不需要以@字符开头。

    如果需要将某个class作为注解的参数,那么请使用Kotlin class(KClass),因为Kotlin编译器会自动将其转换为Java Class,这样Java代码就可以正常看到注解与参数了,下面瞅一下KClass:

    下面来写个例子:

    注解使用处目标(use-site target):

    在对类的属性或是主构造方法的参数声明注解时,会存在多个Java元素都可以通过对应的Kotlin元素生成出来,因此,在所生成的Java字节码中,就会存在多个可能的位置来生成相应的注解,若想精确指定如何来生成注解,那么可以使用注解的使用处目标方式来实现。

    上面说得有点抽象,用代码来具化一下:

    其实对于当前的文件,也可以指定注解,如:

    我们知道编写的一个Kotlin文件在编译成class文件会按文件名+kt.class规则来生成,如:

    编译一下:

    此时我们就可以通过文件的注解改掉这个规则,如下:

    其中可以看一下JvmName其实就是一个注解:

    这样就可以动态的去改成我们想要规则的class名称。

    以上就是关于Kotlin的注解相关的东东,注意:它跟Java的注解是百分之百兼容滴~

  • 相关阅读:
    UVA 11997 K Smallest Sums
    POJ 1007 DNA Sorting
    POJ 3669 Meteor Shower
    POJ 2376 Cleaning Shifts
    POJ 3050 Hopscotch
    操作系统第6次实验报告:使用信号量解决进程互斥访问
    操作系统第5次实验报告:内存管理
    操作系统第4次实验报告:文件系统
    操作系统第3次实验报告:管道
    操作系统第2次实验报告:创建进程
  • 原文地址:https://www.cnblogs.com/webor2006/p/11530600.html
Copyright © 2020-2023  润新知