我写了数据类
data class FileHeader(
val relativePath: String,
val orderNumber: Long,
val bodySize: Int
) : Serializable {
@Transient
var headerSize: Int = 0
get() = relativePath.length + 8
}
Run Code Online (Sandbox Code Playgroud)
它按我的预期工作。
但为什么我不能将 @Transient 与 val 字段一起使用?
错误是:
此注释不适用于没有支持字段或委托的目标成员属性
这样做有什么原因吗?
注释
默认序列化适用于字段,不关心 getter 方法。因此,如果没有支持字段,则无需序列化(也无需transient在字节码中标记)。在这种情况下,注释将毫无用处,因此设计者选择将其设置为错误。
如果您不明白为什么没有支持字段:
对于您的var,默认设置器需要支持字段;当你把它改为 时val,它就不是了。
| 归档时间: |
|
| 查看次数: |
4324 次 |
| 最近记录: |