1. ホーム
  2. static-methods

[解決済み] Kotlinの静的拡張メソッド

2022-04-24 13:19:11

質問

Kotlinで静的な拡張メソッドを定義するにはどうすればよいですか?また、それは可能でしょうか?私は現在、以下のような拡張メソッドを持っています。

public fun Uber.doMagic(context: Context) {
    // ...
}

上記の拡張機能は、インスタンスに対して呼び出すことができます。

uberInstance.doMagic(context) // Instance method

しかし、以下のように静的メソッドにするにはどうしたらよいでしょうか。

Uber.doMagic(context)         // Static or class method

解決方法は?

を実現するために Uber.doMagic(context) を拡張して書くことができます。 コンパニオンオブジェクト Uber (コンパニオンオブジェクトの宣言が必要です)。

class Uber {
    companion object {}
}

fun Uber.Companion.doMagic(context: Context) { }