【问题标题】:Using @Parcelize but by removing Getters and Setters in kotlin使用 @Parcelize 但在 kotlin 中删除 Getter 和 Setter
【发布时间】:2020-12-11 05:26:39
【问题描述】:

我正在尝试使用 @Parcelize 忽略 kotlin 中的 getter 和 setter。但是有点困惑,在这里。

class College : Parcelable {
var studentFound = true
    set(value) {
        field = value
        studentFoundEvents.onNext(value)
    }
val studentFoundEvents = PublishSubject.create<Boolean>()

var sNumber: String? = null
var sLevel: String? = null

var course: Course? = null
    set(value) {
        field = value
        cName = null
        cId = null
        cProf = null  
    }
}

我有各自的 constructor(source: Parcel) {}, override fun writeToParcel(dest: Parcel?, flags: Int) {}override有趣的 describeContents(): Int = hashCode().

我想将整个 Parcelable 转换为 @Parcelize。 这是我尝试过的,但没有锻炼。

@Parcelize
data class College(
    var studentFound = true,
    val studentFoundEvents = PublishSubject.create<Boolean>(), // does not work here
    var sNumber: String? = null,
    var sLevel: String? = null,
    var course: Course? = null
) : Parcelable

这里有什么遗漏吗?提前致谢。

【问题讨论】:

    标签: android kotlin parcelable


    【解决方案1】:

    我对@Parcelize 进行了几个小时的研究,不知道这是否是最好的方法。如果您有任何最佳解决方案,请始终强烈推荐任何人。

    @Parcelize
    class College : Parcelable {
    var studentFound = true
        set(value) {
            field = value
            studentFoundEvents.onNext(value)
        }
    val studentFoundEvents = PublishSubject.create<Boolean>()
    
    var sNumber: String? = null
    var sLevel: String? = null
    
    var course: Course? = null
        set(value) {
            field = value
            cName = null
            cId = null
            cProf = null  
        }
    }
    

    添加 @Parcelize 但不将属性移动到构造函数并删除这些

    constructor(source: Parcel) {}, 
    override fun writeToParcel(dest: Parcel?, flags: Int) {} and 
    override fun describeContents(): Int = hashCode().
    

    希望这对任何人都有帮助,也欢迎最好的方法。

    【讨论】:

    • 这给出了警告:属性不会被序列化为“包裹”。添加“@IgnoredOnParcel”注释以删除警告。所以它不起作用。
    猜你喜欢
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 2016-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多