私はkotlinにかなり慣れていないので、それが可能かどうか、また、コンパニオンオブジェクト内から、コンパニオンオブジェクトの外部にあるメソッドや変数にアクセスすることはベストプラクティスに反するのかどうか疑問に思いました。
例えば
class A {
fun doStuff(): Boolean = return true
companion object{
public fun stuffDone(): Boolean = return doStuff()
}
}
またはそのようなもの
ありがとうございました
doStuff()
はクラスのインスタンスメソッドです。それを呼び出すにはクラスインスタンスが必要です。コンパニオンオブジェクトのメンバーは、Javaの静的メソッドと同様に、スコープ内にクラスインスタンスを持ちません。したがって、コンパニオンオブジェクトメソッドからインスタンスメソッドを呼び出すには、インスタンスを明示的に指定する必要があります。
class A {
fun doStuff() = true
companion object {
fun stuffDone(a: A) = a.doStuff()
}
}
コンパニオンオブジェクトブロックの外部にある関数を呼び出すこともできます。
class A {
fun doStuff() = true
companion object {
val a = A()
fun stuffDone() = a.doStuff()
}
}