【Kotlin 入門指南】Java 和 Kotlin 混合使用 - Kotlin 註解 @JvmName

2023/12/11閱讀時間約 2 分鐘
【Kotlin 入門指南】系列文章目錄:https://bit.ly/3t8awwL
Kotlin 線上課程教學影片:https://bit.ly/3qJ5a5Q

@JvmName

如何解決 Java 和 Kotlin 的函數命名衝突,在混合開發 Java 和 Kotlin 項目中,函數命名衝突是一個常見的問題。這時可以利用@JvmName 註解來解決這樣的狀況。@JvmName 註解非常實用,它可以讓你更靈活地控制在 JVM 平台上生成的 Kotlin 程式碼名稱。

Kotlin 註解 @JvmName 範例

範例檔案目錄結構說明

檔名錯誤或檔案放置不正確的情況下,將會導致編譯錯誤或呼叫時的問題,需要特別留意:

  • 「Main.kt」放在「src/main/kotlin」目錄裡面。
  • 「JavaClassDemo.java」要放在「src/main/java/com.teachable.hkt」目錄裡面。
raw-image

Main.kt

使用註解 @JvmName 來指定 Kotlin 函數在 JVM 生成的名稱。

這次範例中的 kotlinFun 函數,可以把它想像成是 Kotlin 世界裡的名稱,假設這個名字在 Java 世界裡發生衝突時,我們可以透過註解 @JvmName 的方式,另取一個名字為 myKotlinFun,這樣可以避免在 Java 世界裡,使用時不會發生衝突。

package com.teachable.hkt //沒有設定 package 名稱,會導致 Java 無法順利呼叫使用

@JvmName("myKotlinFun")
fun kotlinFun() {
println("英文函數名稱")
}

JavaClassDemo.java

在 Java 中呼叫 Kotlin 的非類別函數時,需要確保檔案名稱以.kt結尾,例如「Main.kt」。呼叫該檔案中非類別的函數時,會使用MainKt.函數名稱的形式。

package com.teachable.hkt;

public class JavaClassDemo {
public static void main(String[] args) {
//直接呼叫 @JvmName 後面定義的名字,即可以解決命名衝突問題
MainKt.myKotlinFun();
}
}
3會員
176內容數
本指南將以清晰易懂的方式介紹基礎概念,讓你能夠快速上手,輕鬆踏上學習 Kotlin 的旅程 透過簡單易懂的方式,讓你將能夠在短時間內建立起對 Kotlin 的基本了解,並開始實際應用於你的專案之中。不論你是想要進入 Android 開發領域或者只是想探索新的程式語言,這份指南都會成為你學習 Kotlin 的理想起點。
留言0
查看全部
發表第一個留言支持創作者!