gpt4 book ai didi

Kotlin:多个命名的伴生对象

转载 作者:行者123 更新时间:2023-12-01 23:16:00 26 4
gpt4 key购买 nike

我有一个类(class),它同时包含了 java.io.Serializableandroid.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异常(exception)。
如何在同一个类中拥有两个不同名称的伴生对象?

最佳答案

可能是您误解了 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。

关于Kotlin:多个命名的伴生对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58725845/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com