【问题标题】:Kapt: How to read annotation (and its parameters)Kapt:如何阅读注释(及其参数)
【发布时间】:2020-10-20 20:47:06
【问题描述】:

上课:

@MarkerForKapt
@AnotherAnnotation(withParameter = "X")
class MyClass

还有一个处理器:


class MyProcessor : AbstractProcessor() {

    override fun getSupportedAnnotationTypes() = setOf(MarkerForKapt::class.qualifiedName)

    override fun process(annotations: Set<TypeElement>, roundEnv: RoundEnvironment): Boolean {
  
        val element = roundEnv.getElementsAnnotatedWith(MarkerForKapt::class.java).single()
    

    }
}

如何从@AnotherAnnotation读取值"X"

【问题讨论】:

    标签: kotlin kapt


    【解决方案1】:

    将 rt.jar 添加到配置中:

    build.gradle.kts:

        implementation(files("${System.getProperty("java.home")}/../lib/tools.jar"))
    

    处理器:

    import com.sun.tools.javac.code.Symbol
    
    
        override fun process(annotations: Set<TypeElement>, roundEnv: RoundEnvironment): Boolean {
      
            val element = roundEnv.getElementsAnnotatedWith(MarkerForKapt::class.java).single()
        
    
            element as Symbol.ClassSymbol
    
            val annotation: AnotherAnnotation? = element.getAnnotation(AnotherAnnotation::class.java)
    
            val theX = annotation?.withParameter
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-26
      • 1970-01-01
      • 1970-01-01
      • 2018-10-12
      相关资源
      最近更新 更多