gpt4 book ai didi

kotlin - 使用 kotlin 表达式注解

转载 作者:行者123 更新时间:2023-12-01 04:25:37 28 4
gpt4 key购买 nike

Kotlin 允许注释表达式。然而,尚不清楚此类注释如何有用以及如何使用它们。

假设在下面的示例中,我想检查该字符串包含在 @MyExpr 注释中指定的数字。这可以实现吗?如何实现?

@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"
}

除非您正在编写 Annotation Processor(因此是一个查找 Annotations 并对其进行处理的东西),否则您的 annotation 仅具有信息值(value)。 它们只是向其他开发人员(或 future 的你)发出的信号。
@Target(AnnotationTarget.EXPRESSION)
@Retention(AnnotationRetention.SOURCE)
annotation class UglyAndOldCode

val a = @UglyAndOldCode "this is something old and requires refactoring"

如果您想实现您在问题中所说的内容,您必须创建一个注释处理器来检查标记为 MyExpr 的表达式。对于您指定的条件。

关于kotlin - 使用 kotlin 表达式注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58843738/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com