Kotlin 注释
注释是 Kotlin 的一项功能,它允许程序员将补充信息嵌入到源文件中。但是,此信息不会改变程序的操作。在开发和部署期间,各种工具都会使用此信息。
Annotations 最常包含以下参数,这些参数必须是编译时常量:
- 原始类型(Int、Long 等)
- 字符串
- 枚举
- 班级
- 其他注释
- 上述类型的数组
应用注释 -
我们可以通过将其名称以 @ 符号作为前缀来应用注释,方法是在代码元素前面。例如,如果我们要应用一个名为 Positive 的注解,如果我们要写注解 Pos,我们应该写如下
@Positive val i: Int
参数可以在括号中传递给类似于函数调用的注释。
@Allowedlanguage("Kotlin")
当一个注解作为参数传递给另一个注解时,我们应该省略@符号。在这里,我们将Replacewith()注释作为参数传递。
@Deprecated("This function is deprecated, use === instead", ReplaceWith("this === other"))
当注解参数是类对象时,我们应该在类名中添加::class为:
@Throws(IOException::class)
声明注释 –
要声明一个注解,类关键字以注解关键字为前缀。就其性质而言,注解的声明不能包含任何代码。在声明我们的自定义注释时,我们应该指定它们可能应用于哪些代码元素以及它们应该存储在哪里。
最简单的注解不包含参数——
annotation class MyClass
需要参数的注解与具有主构造函数的类非常相似——
annotation class Suffix(val s: String)
注释一个构造函数——
我们还可以注释类的构造函数。可以通过使用 constructor 关键字进行构造函数声明并在其前面放置注释来完成。
class MyClass@Inject constructor(dependency: MyDependency) {
//. . .
}
注释属性 -
我们可以通过给属性添加注解来注解类的属性。在下面的示例中,如果名称的值是 Kotlin 或Java,我们假设 Lang 实例是有效的。
class Lang (
@Allowedlanguages(["Java","Kotlin"]) val name: String)
}
一些内置注释 –
Kotlin 还提供了某些内置注解,用于为用户定义的注解提供更多属性。准确的说,这些注解是用来标注注解的。
@目标 -
这个注解指定了被注解的注解可以应用的地方,例如类、函数、构造函数、类型参数等。当一个注解被应用到一个类的主构造函数时,constructor关键字在构造函数之前被指定。
演示@Target 注解的示例
Java
@Target(AnnotationTarget.CONSTRUCTOR, AnnotationTarget.LOCAL_VARIABLE)
annotation class AnnotationDemo2
class ABC @AnnotationDemo2 constructor(val count:Int){
fun display(){
println("Constructor annotated")
println("Count is $count")
}
}
fun main(){
val obj = ABC(5)
obj.display()
@AnnotationDemo2 val message: String
message = "Hello"
println("Local parameter annotated")
println(message)
}
Java
//Specifying an annotation with runtime policy
@Retention(AnnotationRetention.RUNTIME)
annotation class AnnotationDemo3
@AnnotationDemo3 fun main(){
println("Main function annotated")
}
Java
@Repeatable
@Retention(AnnotationRetention.SOURCE)
annotation class AnnotationDemo4 (val value: Int)
@AnnotationDemo4(4)
@AnnotationDemo4(5)
fun main(){
println("Repeatable Annotation applied on main")
}
输出:
Constructor annotated
Count is 5
Local parameter annotated
Hello
@保留 -
此注解指定注解的可用性,即注解是保留在源文件中,还是在运行时可用等。它的必需参数必须是具有以下元素的 AnnotationRetention 枚举的实例:
- 来源
- 二进制
- 运行
演示 @Retention 注释的示例:
Java
//Specifying an annotation with runtime policy
@Retention(AnnotationRetention.RUNTIME)
annotation class AnnotationDemo3
@AnnotationDemo3 fun main(){
println("Main function annotated")
}
输出:
Main function annotated
@可重复 -
这个注解允许一个元素被多次注解同一个注解。根据 Kotlin 1.3 的当前版本,此注解只能与 Retention Policy 设置为 SOURCE 一起使用。
演示 @Repeatable 的示例
Java
@Repeatable
@Retention(AnnotationRetention.SOURCE)
annotation class AnnotationDemo4 (val value: Int)
@AnnotationDemo4(4)
@AnnotationDemo4(5)
fun main(){
println("Repeatable Annotation applied on main")
}
输出:
Repeatable Annotation applied on main