本文概述
- Kotlin元注释
- 使用注释的示例
- 声明注释
- 注释构造函数
- 注释财产评估员
- 使用构造函数作为注释
- 使用TYPE注释的示例
Kotlin元注释我们可以在声明注释时添加元信息。以下是一些元注释:
注解名称 | 用法 |
---|---|
@Target | 它针对可以用注释注释的所有可能种类的元素。 |
@Retention | 它指定注释是存储在已编译的类文件中, 还是在运行时通过反射可见。 |
@Repeatable | 此元批注确定批注在单个代码元素上适用两次或多次。 |
@MustBeDocumented | 此元文档指定注释是公共API的一部分, 应包含在类或方法中。 |
@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.EXPRESSION)@Retention(AnnotationRetention.SOURCE)@MustBeDocumentedannotation class MyClass
声明注释通过将注释修饰符放在类前面来声明注释。
annotation class MyClass
注释构造函数也可以注释类的构造函数。这是通过为构造函数声明添加builder关键字并将注释放在其前面来完成的。
class MyClass@Inject constructor( dependency: MyDependency){//. . . }
注释财产评估员
class MyClass{var a: MyDependency? = null@Inject set}
使用构造函数作为注释我们还可以使用构造函数作为注释。使用构造函数作为注释需要参数。
annotation class MyClass(val why: String)@MyClass("parameter") class Foo{}
用作注释的参数不能为可空类型。这是因为JVM不支持将null作为注释属性的值。
我们还可以将一个注释用作另一个注释的参数, 在这种情况下, 它不能使用前缀@字符。例如:
annotation class ReplaceWith(val expression: String)annotation class Deprecated(val message: String, val replaceWith: ReplaceWith = ReplaceWith(""))@Deprecated("This function is deprecated, use === instead", ReplaceWith("this === other"))
Kotlin还指定类可以使用KClass接受注释的自变量。 Kotlin编译器会自动将其转换为java类, 从而可以正常查看批注和参数。
import kotlin.reflect.KClassannotation class MyClass(val arg1: KClass<
*>
, val arg2: KClass<
out Any>
)@MyClass(String::class, Int::class) class Foo
使用TYPE注释的示例创建一个Java注释接口Ann.java
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@interfaceAnn{int value();
}
创建一个使用注释接口Ann的MyClass.kt类。
@Ann(value = http://www.srcmini.com/10)class MyClass{}fun main (args: Array<
String>
){var c = MyClass()var x = c.javaClass.getAnnotation(Ann::class.java)if(x!=null){println("Value:"+x?.value)}}
输出:
Value: 10
推荐阅读
- Kotlin数组
- Kotlin Android XMLPullParser教程
- 使用SAX Parser的Kotlin Android XML解析
- 使用DOM解析器的Kotlin Android XML解析
- Kotlin Android Toast
- Kotlin Android视频播放器
- Kotlin Android TextView和EditText
- Kotlin Android SQLite教程
- Kotlin Android TabLayout与FrameLayout