English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Kotlin 伴生オブジェクト(Companion)

この記事では、Kotlinプログラムでコンパニオンオブジェクトを作成および使用する方法を例を通じて学びます。

コンパニオンオブジェクトについて議論する前に、クラスのメンバーにアクセスするための例を示しましょう。

class Person {
    fun callMe() = println("I'm called.")
{}
fun main(args: Array<String>) {
    val p1 = Person()
    
    //オブジェクトpを使用して1callMe()メソッドを呼び出します
    p1.callMe()    
{}

ここでは、Personクラスのオブジェクトpを作成しました1 callMe()メソッドを呼び出すために

しかし、Kotlinでは、クラス名(この例ではPerson)を使用してcallMe()メソッドを呼び出すこともできます。これには、companionキーワードを使用してマークする必要があります。オブジェクト宣言オブジェクト宣言を使用してコンパニオンオブジェクトを作成します。

例:コンパニオンオブジェクト

class Person {
    companion object Test {
        fun callMe() = println("I'm called.")
    {}
{}
fun main(args: Array<String>) {
    Person.callMe()
{}

このプログラムを実行すると、出力は以下のようになります:

I'm called.

プログラムでは、Testオブジェクトは、コンパニオンオブジェクトを作成するためにコンパニオンキーワードを使用して宣言されます。したがって、以下のクラス名を使用してメソッドを呼び出すことができます:callMe()

Person.callMe()

コンパニオンオブジェクトの名前は選択的で省略できます。

class Person {
    
    //コンパニオンオブジェクトの名前は選択的で省略できます。
    companion object {
        fun callMe() = println("I'm called.")
    {}
{}
fun main(args: Array<String>) {
    Person.callMe()
{}

Javaに詳しい場合は、コンパニオンオブジェクトを静的メソッドに関連付けるかもしれません(たとえ内部の動作が全く異なる場合でも)。

コンパニオンオブジェクトは、そのクラスのプライベートメンバーにアクセスできるため、ファクトリーメソッドパターンを実現するために使用できます。