使用kotlin表达式注释
Kotlin允许注释表达式。然而,目前尚不清楚这些注释如何有用以及如何使用它们 假设在下面的示例中,我想检查一下,该字符串包含@MyExpr注释中指定的数字。这能实现吗?如何实现使用kotlin表达式注释,kotlin,annotations,Kotlin,Annotations,Kotlin允许注释表达式。然而,目前尚不清楚这些注释如何有用以及如何使用它们 假设在下面的示例中,我想检查一下,该字符串包含@MyExpr注释中指定的数字。这能实现吗?如何实现 @Target(AnnotationTarget.EXPRESSION) @Retention(AnnotationRetention.SOURCE) annotation class MyExpr(val i: Int) {} fun someFn() { val a = @MyExpr(1) "value
@Target(AnnotationTarget.EXPRESSION)
@Retention(AnnotationRetention.SOURCE)
annotation class MyExpr(val i: Int) {}
fun someFn() {
val a = @MyExpr(1) "value#1";
val b = @MyExpr(2) "value#2";
}
指定@Target(AnnotationTarget.EXPRESSION)
只是告诉编译器注释用户可以将其放置在何处的一种方式
它不会自己做任何事情,而不是那样做
例如
@Target(AnnotationTarget.EXPRESSION)
@Retention(AnnotationRetention.SOURCE)
annotation class Something
// compiler will fail here:
@Something class Foo {
// but will succeed here:
val a = @Something "value#1"
}
除非您正在编写注释处理器(这是一种查找注释并对其进行处理的东西),否则您的注释仅具有信息价值。它们只是向其他开发人员(或未来的您)发出某种信息的信号
@Target(AnnotationTarget.EXPRESSION)
@Retention(AnnotationRetention.SOURCE)
annotation class UglyAndOldCode
val a = @UglyAndOldCode "this is something old and requires refactoring"
如果您想实现您在问题中所述的内容,您必须创建一个注释处理器,用于检查标有
MyExpr
的表达式是否符合您指定的条件。这只在编译时有用。我认为这可以通过kapt实现。