美文网首页Kotlin
注解处理器Annotation Processor中判断Java

注解处理器Annotation Processor中判断Java

作者: WuRichard | 来源:发表于2018-03-14 21:16 被阅读37次

    在Android Studio中,项目编译build之后kapt会在项目的build/tmp/kapt3/stubs目录下会生成kotlin编写的类的Java“存根类”,在这些类的顶部我们可以看到有这样一个注解@kotlin.Metadata(...)
    @Metadata是 Kotlin 里比较特殊的一个注解。它记录了 Kotlin 代码元素的一些信息,比如 class 的可见性,function 的返回值,参数类型,property 的 lateinit,nullable 的属性等等。这些 Metadata 的信息由 kotlinc 生成,最终会以注解的形式存于 .class 文件。
    所以要在注解处理器判断一个类是kotlin语言或者Java语言编写的我们可以通过判断该类是否有@Metadata注解来区分:

        /**
         * if true mean this class is java class
         */
        private fun isJavaFile(element: TypeElement): Boolean {
            val tmMetadata = mElements.getTypeElement("kotlin.Metadata").asType()
            return element.annotationMirrors.find { it.annotationType == tmMetadata } == null
        }
    

    相关文章

      网友评论

        本文标题:注解处理器Annotation Processor中判断Java

        本文链接:https://www.haomeiwen.com/subject/oeyqqftx.html