问题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,可以设置为protectedclass Foo extends Serializable { protected final val serialVersionUID = 1L }