Win*_*ung 8 serialization kotlin
由于kotlin没有静态字段,我应该serialVersionUID在伴随对象中定义吗?
Jay*_*ard 12
要serialVersionUID在Kotlin中创建一个类,您有一些选项,包括将一个成员添加到该类的伴随对象.
最简洁的字节码来自a private const val将成为包含类的私有静态变量,在这种情况下MySpecialCase:
class MySpecialCase : Serializable {
companion object {
private const val serialVersionUID: Long = 123
}
}
Run Code Online (Sandbox Code Playgroud)
您也可以使用这些表单,每个表单都具有getter/setter方法的副作用,这些方法不是序列化所必需的...
class MySpecialCase : Serializable {
companion object {
private val serialVersionUID: Long = 123
}
}
Run Code Online (Sandbox Code Playgroud)
这会创建静态字段,但也会getSerialVersionUID在随播对象上创建一个不必要的getter .
class MySpecialCase : Serializable {
companion object {
@JvmStatic private val serialVersionUID: Long = 123
}
}
Run Code Online (Sandbox Code Playgroud)
这会创建静态字段,但也会getSerialVersionUID在包含类上创建静态getter,MySpecialCase这是不必要的.
但是所有工作都是将其添加serialVersionUID到Serializable类中的方法.
是的,您可以在伴随对象中声明它。医生说:
而且,在对象和伴随对象中定义的公共属性以及用const注释的顶级属性在Java中都变成了静态字段
但是私有财产似乎也是如此:
class MyException: Exception() {
companion object {
private val serialVersionUid: Long = 1
}
}
Run Code Online (Sandbox Code Playgroud)
javap -c -p com.ninja_squad.kotlindiscovery.MyException.class
Compiled from "MyException.kt"
public final class com.ninja_squad.kotlindiscovery.MyException extends java.lang.Exception {
private static final long serialVersionUid;
public static final com.ninja_squad.kotlindiscovery.MyException$Companion Companion;
static {};
Code:
0: getstatic #38 // Field com/ninja_squad/kotlindiscovery/MyException$Companion.INSTANCE:Lcom/ninja_squad/kotlindiscovery/MyException$Companion;
3: putstatic #40 // Field Companion:Lcom/ninja_squad/kotlindiscovery/MyException$Companion;
6: lconst_1
7: putstatic #21 // Field serialVersionUid:J
10: return
public com.ninja_squad.kotlindiscovery.MyException();
Code:
0: aload_0
1: invokespecial #15 // Method java/lang/Exception."<init>":()V
4: return
public static final long access$getSerialVersionUid$cp();
Code:
0: getstatic #21 // Field serialVersionUid:J
3: lreturn
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4284 次 |
| 最近记录: |