注解處理器Annotation Processor中判斷Java或kotlin類

在Android Studio中,項(xiàng)目編譯build之后kapt會(huì)在項(xiàng)目的build/tmp/kapt3/stubs目錄下會(huì)生成kotlin編寫的類的Java“存根類”,在這些類的頂部我們可以看到有這樣一個(gè)注解@kotlin.Metadata(...)
@Metadata是 Kotlin 里比較特殊的一個(gè)注解。它記錄了 Kotlin 代碼元素的一些信息,比如 class 的可見性,function 的返回值,參數(shù)類型,property 的 lateinit,nullable 的屬性等等。這些 Metadata 的信息由 kotlinc 生成,最終會(huì)以注解的形式存于 .class 文件。
所以要在注解處理器判斷一個(gè)類是kotlin語言或者Java語言編寫的我們可以通過判斷該類是否有@Metadata注解來區(qū)分:

    /**
     * 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
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,545評(píng)論 19 139
  • 從JDK1.5開始,Java引入了一種新的注釋機(jī)制-Annotation,中文名稱一般叫注解,它一般作為說明信息,...
    黑心石閱讀 14,980評(píng)論 1 4
  • 很多軟件公司,在遇到產(chǎn)品交付延期、開發(fā)周期長(zhǎng)、產(chǎn)品質(zhì)量低下、運(yùn)維成本高、響應(yīng)需求慢等等問題時(shí),會(huì)嘗試引入敏捷來改善...
    安曉輝0閱讀 1,951評(píng)論 0 1
  • 碎與巨大 2016年10月9日星期日 上班日 空調(diào)依然很冷,依然忘記帶長(zhǎng)袖過來 從同事那邊借了件外套披了上來,中午...
    千葉的時(shí)光收藏閱讀 198評(píng)論 0 1
  • 大家好,我是你們的新晉私人健身教練羅羅,抱著對(duì)未來的憧憬和美好生活的向往,一頭扎入了中國(guó)的健身行業(yè)。二十...
    私人教練羅羅閱讀 202評(píng)論 0 0

友情鏈接更多精彩內(nèi)容