如何为kotlin异常生成serialVersionUID? [英] How to generate serialVersionUID for kotlin exceptions?
本文介绍了如何为kotlin异常生成serialVersionUID?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
由于Kotlin没有静态字段,我应该在伴随对象中定义serialVersionUID
吗?
As kotlin doesn't have static fields, should I define serialVersionUID
in companion object?
推荐答案
是的,您可以在伴随对象中声明它. 文档说:
Yes, you can declare it in the companion object. The doc says:
还将在对象和伴随对象中定义的公共属性以及用const注释的顶级属性转换为Java中的静态字段
Also, public properties defined in objects and companion objects, as well as top-level properties annotated with const, are turned into static fields in Java
但是私有属性也是如此:
But that seems to be the case with private properties too:
class MyException: Exception() {
companion object {
private val serialVersionUid: Long = 1
}
}
javap -c -p com.ninja_squad.kotlindiscovery.MyException.class
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
}
这篇关于如何为kotlin异常生成serialVersionUID?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文