Scala Try().getOrElse(0)

问题1: Try().getOrElse(0)获取到一个anyvalue

def getData:Long={
   20
}

def checkData={
  val data=Try(getData).getOrElse(0)
  if (data>0){
       println("check success")
  }
}

原因:
getData返回的是Long,getOrElse的参数是int,所以会冲突
解决方案,将前后的类型统一为int,或者统一为long

def getData:Long={
   20
}

def checkData={
  val data=Try(getData.toInt).getOrElse(0)
  if (data>0){
       println("check success")
  }
}

问题2 :Caused by: java.io.InvalidClassException: com.tencent.vsearch.zlink.transform.ProcessTransform$$anon$4; local class incompatible: stream classdesc serialVersionUID = 205913312619188411, local class serialVersionUID = 4113279927100779276

  • 方法1. 加上serialVersionUID注解,通过注解加上uid。
    注意serialVersionUID的注解是一个 private, static, and final 字段,即如果该类被子类继承,子类没有serialVersionUID成员
    On the JVM, a class with this annotation will receive a private, static, and final field called serialVersionUID with the provided value, which the JVM’s serialization mechanism uses to determine serialization compatibility between different versions of a class.

    @SerialVersionUID(1L)
    class Foo extends Serializable {
    	// class code here
    }
    
  • 方法2.直接给类手动加一个成员
    这里自定义成员的可达性,如果不会该类不会有子类,或者希望子类自己定义自己的serialVersionUID,那么成员可以是private。如果希望子类也拥有和父类相同的serialVersionUID,可以设置为protected

    class Foo extends Serializable {
       protected final val serialVersionUID = 1L
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值