注解处理器Annotation Processor中判断Java或kotlin类

在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
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,308评论 19 139
  • 从JDK1.5开始,Java引入了一种新的注释机制-Annotation,中文名称一般叫注解,它一般作为说明信息,...
    黑心石阅读 14,957评论 1 4
  • 很多软件公司,在遇到产品交付延期、开发周期长、产品质量低下、运维成本高、响应需求慢等等问题时,会尝试引入敏捷来改善...
    安晓辉0阅读 5,847评论 0 1
  • 碎與巨大 2016年10月9日星期日 上班日 空調依然很冷,依然忘記帶長袖過來 從同事那邊借了件外套披了上來,中午...
    千叶的时光收藏阅读 1,209评论 0 1
  • 大家好,我是你们的新晋私人健身教练罗罗,抱着对未来的憧憬和美好生活的向往,一头扎入了中国的健身行业。二十...
    私人教练罗罗阅读 1,189评论 0 0