Kotlin で静的変数を作成して使用する

Kailash Vaviya 2023年1月30日
  1. Kotlin で静的変数を宣言する
  2. Companion オブジェクトを使用して Kotlin 静的変数を作成する
  3. @JvmStatic 注釈を使用して Kotlin 静的変数を作成する
Kotlin で静的変数を作成して使用する

Java で変数を静的として宣言すると、オブジェクトを作成しなくても、さまざまなクラスで使用できます。これは、静的変数のメモリが 1 回だけ割り当てられることを意味します。

JVM は静的変数にメモリを複数回割り当てないため、効率的なメモリ管理に使用されます。ただし、Kotlin には static キーワードはありません。では、Kotlin で静的変数をどのように宣言するのでしょうか。

この記事では、Kotlin で静的変数の概念を実装する方法を紹介します。

Kotlin で静的変数を宣言する

Kotlin には static キーワードはありませんが、次を使用して同じメモリ管理効率を実現できます。

  • Companion オブジェクト
  • @JvmStatic 注釈

両方の方法を実行し、Kotlin 静的変数を実装するための例を示します。

Companion オブジェクトを使用して Kotlin 静的変数を作成する

companion キーワードを使用して companion オブジェクトを作成し、静的変数機能の実現に役立てることができます。オブジェクトの前に companion キーワードを使用する必要があります。

これらのオブジェクトは、クラスのプライベートメンバーにアクセスできます。したがって、メモリを 2 回割り当てる必要はありません。クラスの名前を使用して、これらのメンバーにアクセスできます。

これは、companion オブジェクトを使用して Kotlin で静的機能を実現する例です。

fun main(args: Array<String>) {
    println("We are accessing a class variable without creating object.\n" + staticExample.privateVar)
}

class staticExample{
    companion object {
        val privateVar = "Hi, you are accessing a static variable."
    }
}

出力:

コンパニオンオブジェクトを使用して Kotlin 静的変数を作成する

例のデモを確認するには、ここをクリックをクリックしてください。

@JvmStatic 注釈を使用して Kotlin 静的変数を作成する

companion オブジェクトメンバーは Java の静的変数に似ていますが、わずかな違いがあります。実行中、companion オブジェクトは引き続き実際のオブジェクトのメンバーです。したがって、インターフェイスを実装することもできます。

ただし、Kotlin で静的変数を宣言する 1つの方法は、@JvmStatic アノテーションを使用することです。変数を宣言するときに@JvmStatic アノテーションを使用すると、JVM はそれらを実際の静的変数と見なします。

@JvmStatic アノテーションを使用して変数を宣言する例を次に示します。

fun main(args: Array<String>) {
    println("We are accessing a class variable without creating object.\n" + staticExample.privateVar)
}

object staticExample{
    @JvmStatic
    val privateVar = "Hi, you are accessing a static variable."
}

出力:

@JvmStatic アノテーションを使用して Kotlin 静的変数を作成する

例のデモを確認するには、ここをクリックをクリックしてください。

著者: 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