scala 序列化与反序列化demo

import java.io.{ByteArrayInputStream, ByteArrayOutputStream, ObjectInputStream, ObjectOutputStream}

case class stu  (name:String,age:Int,sex:String) extends Serializable

object My_Serializable {

  /**
   * @param obj 输入的对象
   * @tparam O 泛型,(输入对象的类型)
   * @return 返回改对象的字节数组
   */
  def serializ_ob[O](obj :O) ={
    val byteArrayOutputStream = new ByteArrayOutputStream()
    val stream = new ObjectOutputStream(byteArrayOutputStream)
    stream.writeObject(obj)
    stream.close()
    byteArrayOutputStream.close()
    byteArrayOutputStream.toByteArray
  }

  /**
   * 反序列化,将字节数组反为对象
   * @param array 该对象的字节数组
   * @tparam O 该对象的类型
   * @return 该对象
   */
  def un_serializ_ob[O](array: Array[Byte]):O={
    val stream = new ByteArrayInputStream(array)
    val stream1 = new ObjectInputStream(stream)
    stream.close()
    stream1.readObject().asInstanceOf[O]
  }

  def main(args: Array[String]): Unit = {
    val xm = stu("小明", 23, "男")

    val bytes = serializ_ob[stu](xm)
    println(bytes.mkString)
    val value = un_serializ_ob[stu](bytes)
    println(value)
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值