Scala中的注解

package Test

import java.io._

/**
  * 注解
  * Annotation是一种对程序代码进行描述的结构化信息。
  * Annotation可以分布在程序的任何地方,能够注解变量、类、方法、参数等多种元素,
  * 它的主要功能有以下几种:
  * 1、自动生成scala文档
  * 2、检查程序中可能出现的语法问题
  * 3、规定程序行为,例如以下代码:
  * //@BeanProperty,要求程序生成相应getter,setter方法,与java命名规范一致
  * class Student[T,S](name:T,var age:S) extends Person(name){
  * //@BeanProperty var studentNo:String=null
  * }
  * annotation还有其它功能,上面三种只是平时在编写程序时最为常用的功能。
  */
/**
  * 注解常用场景
  * 注解的常用场景包括volatile,transient,native,SerialVersionUID,serializable 5个,
  * 用于对变量或方法进行注解,其中volatile用于标识变量可能会被多个线程同时修改,它不是线程安全的;
  * transient用于标识变量是瞬时的,它不会被持久化;
  * native用于标识算法来自C或C++代码实现
  */

//Person类可序列化,直接继承Serializable
class Person extends Serializable {
  //  var name:String="zzh"
  //@transient注解声明后,成员变量不会被序列化
  //如果给成员变量加@transient注解的话,则相应的成员变量不会被序列化,
  //此时如果进行反序列化的话,对应成员变量为null
  @transient var name: String = "zzh"
  var age: Int = 0

  override def toString() = "name=" + name + " age=" + age
}

object Serialize {
  def main(args: Array[String]): Unit = {
    val file = new File("person.out")

    val out = new ObjectOutputStream(new FileOutputStream(file))
    val person = new Person
    out.writeObject(person)
    out.close()

    val in = new ObjectInputStream(new FileInputStream(file))
    val newPerson = in.readObject()
    in.close()
    println(newPerson)
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值