Kotlin 中 Java 靜態函式的等價物

Kailash Vaviya 2024年2月15日
  1. Kotlin 等價於 Java 的靜態函式
  2. 使用 Companion 物件在 Kotlin 中實現靜態功能
  3. 使用 @JvmStatic 註解在 Kotlin 中實現靜態功能
  4. 在 Kotlin 中使用包級函式實現靜態功能
Kotlin 中 Java 靜態函式的等價物

使用 Java 程式語言的 Android 開發人員非常瞭解 static 關鍵字。Java 的 static 關鍵字是一個非訪問修飾符。

我們可以使用 static 關鍵字在 Java 中建立靜態變數和方法。它有助於提高記憶體管理效率。

Java 虛擬機器 (JVM) 只為這些變數和函式分配一次記憶體,從而使它們具有記憶體效率。但是 Kotlin 現在是 android 開發的官方語言。

隨著開發人員從 Java 遷移到 Kotlin,最大的障礙之一是在 Kotlin 中建立靜態函式。Kotlin 中沒有 static 這樣的關鍵字。

在本文中,我們將學習 Kotlin 中 Java 的 static 關鍵字的等價物。

Kotlin 等價於 Java 的靜態函式

雖然 Kotlin 程式語言沒有 static 關鍵字,但我們仍然可以在 Kotlin 中實現靜態功能。

靜態方法的核心好處是記憶體管理效率。因此,為了實現靜態功能,我們需要找到一種方法來確保記憶體只分配一次並且值不可更改。

在 Kotlin 中實現靜態功能的三種方式:

  • 使用 companion 物件
  • 使用 @JvmStatic 註釋
  • 使用包級功能

我們將逐一介紹這三種方法。我們還將檢視如何實現它們的示例。

使用 Companion 物件在 Kotlin 中實現靜態功能

我們可以使用 companion 關鍵字建立一個伴隨物件。JVM 會將伴隨物件儲存在與類相同的檔案中;因此,物件可以訪問類的所有私有變數和函式。

伴隨物件與類一起初始化;因此,記憶體分配只發生一次。伴隨物件的語義類似於 Java static 初始化器的語義。

現在我們知道什麼是伴生物件以及它們是如何工作的,讓我們看一個例子。在這個例子中,我們將建立一個伴生物件,看看它如何處理記憶體管理以在 Kotlin 中實現靜態功能。

fun main(args: Array<String>) {
    // Accessing static variables and methods without creating objects
    println("Welcome!"+'\n' + "Accessing function of the ExampleClass without creating an object."
            + '\n' + ExampleClass.staticFunction());
}

class ExampleClass{
    companion object {
        fun staticFunction(): String {
            return "Static Method!"
        }
    }
}

輸出:

在 Kotlin 中使用 Companion 物件實現靜態功能

點選這裡檢視上面示例程式碼的演示。

如果我們嘗試更改上述程式碼中的變數,則會丟擲錯誤。由於靜態方法和變數只分配一次記憶體,更改變數會出錯。

使用 @JvmStatic 註解在 Kotlin 中實現靜態功能

除了使用 companion 物件外,我們還可以使用 @JvmStatic 註釋來實現靜態功能。根據官方文件,這個註解指定 JVM 應該建立一個額外的靜態方法。

使用 @JvmStatic 註釋非常簡單。我們只需要在我們想要成為靜態的函式之前新增註釋。

這是一個演示相同的示例。

fun main(args: Array<String>) {
    // Accessing static variables and methods without creating objects
    println("Hello!"+'\n' + ExampleClass.staticFunction());
}

object ExampleClass{
    @JvmStatic
    fun staticFunction(): String {
        return "Static Method!"
    }
}

輸出:

在 Kotlin 中使用 @JvmStatic 註解實現靜態功能

點選這裡檢視上面示例程式碼的演示。

在 Kotlin 中使用包級函式實現靜態功能

我們還可以通過將方法或變數宣告為包級成員來實現 Kotlin 中的靜態功能。使用包級函式是實現靜態功能的便捷方式。

你首先必須在任何包中建立一個基本的 .kt 檔案,然後定義方法。定義後,你可以匯入包並從任何類呼叫方法。

這是你如何做到的。

// create a .kt file first in any package and define the method
package example.app

fun product(x: Int, y: Int){
    return x*y
}

// after defining the method, import the package and call it from any class
import example.app.product

product (3*7)
作者: Kailash Vaviya
Kailash Vaviya avatar Kailash Vaviya avatar

Kailash Vaviya is a freelance writer who started writing in 2019 and has never stopped since then as he fell in love with it. He has a soft corner for technology and likes to read, learn, and write about it. His content is focused on providing information to help build a brand presence and gain engagement.

LinkedIn

相關文章 - Kotlin Static