如何为kotlin异常生成serialVersionUID? [英] How to generate serialVersionUID for kotlin exceptions?

查看:385
本文介绍了如何为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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆