当前位置: 首页 > 知识库问答 >
问题:

用Kotlin中的成员表示Java注释类

温嘉赐
2023-03-14

我是Kotlin的新手,目前正在OSGI包开发POC中使用v1.3.31。我目前正在使用注释处理器来生成OSGI清单声明,并试图找到Kotlin的等价物:

@ObjectClassDefinition(name="Config", description = "Sample Config")
    public static @interface Config {
        @AttributeDefinition(name = "A parameter", description = "Configurable param")
        String myParameter() default "";
    }

假设这些 OSGI 注释创建为:

@Retention(RetentionPolicy.CLASS)
@Target(ElementType.TYPE)
public @interface ObjectClassDefinition

/*....*/

@Retention(RetentionPolicy.CLASS)
@Target(ElementType.METHOD)
public @interface AttributeDefinition

在 Kotlin 中,我能得到的最接近的方法是在公共注释类上使用@ObjectClassDefinition注释,但由于 Kotlin 注释类不支持成员,因此我无法在类成员上使用@AttributeDefinition

  • 我尝试只使用静态编程语言接口,但注释处理器不允许任何非注释类。
  • 我还尝试在静态编程语言中创建java.lang.Annotation来绕过此行为,但编译器不允许。

当前部分工作的实现,以下是最新的GitHub源代码:

@ObjectClassDefinition(name = "Sample Kotlin servlet",
            description = "Simple Kotlin servlet with configurable properties")
    public annotation class  Config (
        val value : String = "hello"
    )

我注意到在Kotlin中注释可能特别棘手。任何有识之士不胜感激!

共有1个答案

殳俊晤
2023-03-14
@ObjectClassDefinition(
    name = "Sample Kotlin servlet",
    description = "Simple Kotlin servlet with configurable properties")
annotation class  Config (
  @get:AttributeDefinition(name = "A parameter", description = "Configurable param")
  val value : String = "hello")

(“公开”似乎没有任何效果)。有关详细信息,请参阅本文档。注释使用站点目标

 类似资料:
  • 问题内容: 我想创建一个自定义注释(使用Java),该注释将接受其他注释作为参数,例如: 但这会导致编译器错误“注释成员的类型无效”。 Object []也无效。 有什么方法可以做我想要的吗? 问题答案: 我本人就此提出针对此问题的解决方法: 好吧,我想要实现的是这样的: 拟议的解决方法: 用以下方法定义一个无参数构造函数的类(稍后将由您自己的注释处理器调用): 用法:

  • 静态编程语言允许注释表达式。然而,尚不清楚这些注释如何有用以及如何使用它们。 假设在下面的示例中,我想检查一下,该字符串包含@MyExpr注释中指定的数字。这能实现吗?如何实现?

  • 静态编程语言是否支持像这样的java注释,因为我无法让它工作。我可以用注释颜色,但实际上没有得到该注释的lint检查。 例子 传递,不显示线头。应使用R颜色显示皮棉。colorPrimary,不与

  • 问题内容: 我想知道一个类的某些成员变量的注释,我用来对一个类进行自省,并使用来查找特定的属性,并使用Class 来获取该属性的Class。 但是我不知道如何将注释添加到成员变量中? 我尝试了,但是都返回了Class的注释,而不是我想要的。例如 : 我想获取地址的注释:@Column,而不是类地址的注释(@Entity,@Table,@Cache)。如何实现呢?谢谢。 问题答案: 另请参阅:htt

  • 我有一个kotlin类,它的属性有一个Java的注释,但是我不能用Java反射访问这些注释: 以下测试打印为空: 如何获取给定kotlin属性的注释?

  • 我的处理器中有一个简单的注释,如下所示: 这适用于java文件,但一旦我将文件转换为kotlin,注释的导入就不再有效。为什么? 我需要改变什么才能让他的注释也在Kotlin中工作?从文档中,我可以看到kotlin与java注释100%兼容,所以我有点困惑这里有什么问题...如果处理器不工作,需要调整以与kotlin一起工作,我会理解,但我不知道为什么导入本身不工作... 我说的图书馆在这里:ht