LoginSignup
0
0

More than 3 years have passed since last update.

【Kotlin】companion objectに定義された関数への参照を取得する

Last updated at Posted at 2020-01-25

やること

companion objectに定義された関数への参照(method reference)を取得します。
これは単純にHoge::fugaと書いても取得できません。

やり方

クラス名を()で囲むやり方とcompanion objectの名前から取得するやり方を紹介します。
基本的には()で囲むやり方でよいと思います。

クラス名を()で囲む

// 取得対象クラス
class SampleClass {
    companion object {
        fun temp(piyo: SampleEnum): String = piyo.name
    }
}

// 取得方法
val func: KFunction<String> = (SampleClass)::temp

名前から取得する

コンパニオンオブジェクトにはデフォルトでCompanionという名前が付いているので、そこから取得することができます。

// 取得対象クラス
class SampleClass {
    companion object {
        fun temp(piyo: SampleEnum): String = piyo.name
    }
}

// 取得方法
val func: KFunction<String> = SampleClass.Companion::temp

コンパニオンオブジェクトに名前を付けた場合は、Companionを付けた名前に置き換えれば同様に取得できます。

// 取得対象クラス
class SampleClass {
    companion object Hoge {
        fun temp(piyo: SampleEnum): String = piyo.name
    }
}

// 取得方法
val func: KFunction<String> = SampleClass.Hoge::temp

補足

名前を付けた場合も()で囲むやり方は機能します。

参考にさせて頂いた記事

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0