我用Kotlin编写了这个方法,并分析了字节码:
Situation 1
class A {
object b {
fun doSomething() {}
}
}
Situation 2
class A {
companion object b {
fun doSomething() {}
}
}
Situation 3
fun doSomething() {}
Bytecode Result
- Situation 1: class
Test$asb
,public final doSomething()I
- 情景2:
Test$Companion
、public final doSomething()I
班 - Situation 3: class
TestKt
,public final static doSomething()I
我的问题是:
I have an enum class, and I want to return an enum instace given an enum variable, for instance, findById
(enum(id, color))
. How would I do it? Companion Object? object?似乎拥有真正静态方法的唯一方法是在包级别,而不需要类声明.但这变得有点太全球化了.有没有办法通过
ClassName.staticMethod
访问它,staticMethod实际上是静态的.提供有意义的包声明方法、伴随对象和对象示例.
上下文.我一直在用Kotlin 编写代码,我发现它很棒.但有时我需要做出决定:例如,一个沉重的不可变属性,在java中我会将其声明为静电最终属性,但在kotlin中,我发现很难"找到对应的属性".