【发布时间】:2016-06-24 20:10:51
【问题描述】:
我在 Kotlin 中编写了这些方法并分析了字节码:
情况1
class A {
object b {
fun doSomething() {}
}
}
情况2
class A {
companion object b {
fun doSomething() {}
}
}
情况3
fun doSomething() {}
字节码结果
- 情况1:班级
Test$asb,public final doSomething()I - 情况2:班级
Test$Companion,public final doSomething()I - 情况3:班级
TestKt,public final static doSomething()I
我的问题是:
我有一个枚举类,我想返回一个给定枚举变量的枚举实例,例如 findById
(enum(id, color))。我该怎么做?伴侣对象?对象?似乎拥有真正静态方法的唯一方法是在包级别,无需类声明。但这变得有点过于全球化了。有什么方法可以通过:
ClassName.staticMethod访问它,staticMethod 真的是静态的。提供有意义的包声明方法、伴生对象和对象示例。
上下文。我一直在使用 Kotlin 进行编码,我觉得它很棒。但有时我需要做出决定:例如,在 java 中我会声明为 static final 的重的不可变属性,但在 Kotlin 中我发现很难“找到等价物”。
【问题讨论】:
-
也许这会有所帮助{stackoverflow.com/q/37794850/2804610}
-
关于你的最后一段,我认为这个答案可以帮助你{stackoverflow.com/a/37944990/2804610}
标签: static kotlin companion-object