Kotlin で Java の静的関数に相当するもの

Kailash Vaviya 2023年10月8日
  1. Kotlin の Java の静的関数に相当するもの
  2. companion オブジェクトを使用して、Kotlin の静的機能を実現する
  3. Kotlin で@JvmStatic 注釈を使用して静的機能を実現する
  4. パッケージレベルの機能を使用して、Kotlin の静的機能を実現する
Kotlin で Java の静的関数に相当するもの

Java プログラミング言語を使用する Android 開発者は、static キーワードをよく知っています。Java の static キーワードは非アクセス修飾子です。

static キーワードを使用して、Java で静的変数とメソッドを作成できます。メモリ管理の効率化に役立ちます。

Java Virtual Machine(JVM)は、これらの変数と機能に 1 回だけメモリを割り当てるため、メモリ効率が高くなります。しかし、Kotlin は現在 Android 開発の公式言語です。

開発者が Java から Kotlin に移行するとき、最大のハードルの 1つは、Kotlin で静的関数を作成することです。Kotlin には static のようなキーワードはありません。

この記事では、Kotlin での Java の static キーワードに相当するものを学習します。

Kotlin の Java の静的関数に相当するもの

Kotlin プログラミング言語には static キーワードがありませんが、Kotlin で静的機能を実現できます。

静的メソッドの主な利点は、メモリ管理の効率です。したがって、静的機能を実現するには、メモリが 1 回だけ割り当てられ、値が変更されないようにする方法を見つける必要があります。

Kotlin で静的機能を実現するには、次の 3つの方法があります。

  • companion オブジェクトの使用
  • @JvmStatic 注釈を使用する
  • パッケージレベルの機能を使用する

3つの方法をそれぞれ説明します。また、それらを実装する方法の例も見ていきます。

companion オブジェクトを使用して、Kotlin の静的機能を実現する

companion キーワードを使用してコンパニオンオブジェクトを作成できます。JVM は、コンパニオンオブジェクトをクラスと同じファイルに保存します。したがって、オブジェクトはクラスのすべてのプライベート変数と関数にアクセスできます。

コンパニオンオブジェクトは、クラスとともに初期化されます。したがって、メモリ割り当ては 1 回だけ発生します。コンパニオンオブジェクトのセマンティクスは、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 の静的機能を実現する

上記のサンプルコードのデモを確認するには、ここをクリックをクリックしてください。

上記のコードで変数を変更しようとすると、エラーがスローされます。static メソッドと変数にはメモリが 1 回だけ割り当てられるため、変数を変更するとエラーが発生します。

Kotlin で@JvmStatic 注釈を使用して静的機能を実現する

companion オブジェクトを使用する以外に、@JvmStatic アノテーションを使用して静的機能を実現することもできます。公式ドキュメントによると、この注釈は、JVM が追加の静的メソッドを作成する必要があることを指定しています。

@JvmStatic アノテーションの使用は非常に簡単です。static にしたい関数の前に注釈を追加するだけです。

同じことを示す例を次に示します。

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!"
    }
}

出力:

@JvmStatic 注釈を使用して Kotlin の静的機能を実現する

上記のサンプルコードのデモを確認するには、ここをクリックをクリックしてください。

パッケージレベルの機能を使用して、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