我确定这是以前问过的,但我似乎找不到答案:
我有一堂课暗示了java.io.Serializable
和android.os.Parcelable
。这些类需要以下伴随对象:
companion object CREATOR : Parcelable.Creator<MyClass> {
override fun createFromParcel(parcel: Parcel): MyClass
...
}
和
companion object {
private val serialVersionUid: Long = 123
}
问题是我不能同时拥有这两个伴随对象,因为这会导致only one companion object per class
异常。
如何在同一个类中有两个名称不同的伴随对象?
可能是您误解了Java示例。
public static Parcelable.Creator<SDFileDir> CREATOR = ...;
public static long serialVersionUid = 123;
在Java中-是的,它是分离的静态对象。您可以在类中放置任意数量的静态字段。
在Kotlin中,应该只有一个静态对象(在此称为Companion
)。但这就像这里的另一堂课。因此,所有新的静态字段都应位于其中。
companion object {
@JvmField
val CREATOR: Parcelable.Creator<SDFileDir> = ...
val serialVersionUid: Long = 123
}
还有一件事:注释@JvmField
可正确与Java一起使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句