Kotlin で Java の静的関数に相当するもの
- Kotlin の Java の静的関数に相当するもの
-
companion
オブジェクトを使用して、Kotlin の静的機能を実現する -
Kotlin で
@JvmStatic
注釈を使用して静的機能を実現する - パッケージレベルの機能を使用して、Kotlin の静的機能を実現する
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!"
}
}
}
出力:
上記のサンプルコードのデモを確認するには、ここをクリックをクリックしてください。
上記のコードで変数を変更しようとすると、エラーがスローされます。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!"
}
}
出力:
上記のサンプルコードのデモを確認するには、ここをクリックをクリックしてください。
パッケージレベルの機能を使用して、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 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