gpt4 book ai didi

kotlin - 如何在Kotlin中注释注释属性?

转载 作者:行者123 更新时间:2023-12-02 13:08:41 25 4
gpt4 key购买 nike

我试图将注释放置在注释属性上。我的理解是我应该可以通过代码访问它-但我不能。我想念什么?

package com.example.annotations

import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.Test
import kotlin.reflect.full.findAnnotation

class AnnotationIssueTest {
@Test
fun testAnnotations() {
Assertions.assertNotNull(MyTestAnnotation::value.findAnnotation<PropertyMarker>())
}

@Test
fun testRegularClass() {
Assertions.assertNotNull(MyTestClass::value.findAnnotation<PropertyMarker>())
}
}


@Retention(AnnotationRetention.RUNTIME)
@Target(AnnotationTarget.PROPERTY)
annotation class PropertyMarker

annotation class MyTestAnnotation(
@PropertyMarker val value: String
)

class MyTestClass(
@PropertyMarker val value: String
)

当我运行给定的测试时, testAnnotations通过时 testRegularClass失败。这是一个错误还是我做错了什么?

最佳答案

由于某些原因,注释属性的注释未进入字节码。但是,您可以改为注释属性 getter :

class AnnotationIssueTest {
@Test
fun testAnnotations() {
Assertions.assertNotNull(MyTestAnnotation::value.getter.findAnnotation<PropertyMarker>())
}

@Test
fun testRegularClass() {
Assertions.assertNotNull(MyTestClass::value.getter.findAnnotation<PropertyMarker>())
}
}


@Retention(AnnotationRetention.RUNTIME)
@Target(AnnotationTarget.PROPERTY_GETTER)
annotation class PropertyMarker

annotation class MyTestAnnotation(
@get:PropertyMarker val value: String
)

class MyTestClass(
@get:PropertyMarker val value: String
)

关于kotlin - 如何在Kotlin中注释注释属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54874819/

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