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)
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Scala使用JUnit4设置超时时间的方式与Java相同,但是在Scala处理异常的方式略有不同。 在Scala,你可以使用JUnit4的`@Test`注解来标注测试方法,并且使用`@Rule`注解来指定测试方法的超时时间。例如: ```scala import org.junit.Test import org.junit.Rule import org.junit.rules.Timeout class TimeoutTest { @Rule def globalTimeout = Timeout.seconds(2) @Test(timeout = 1000) def testMethod(): Unit = { // 在超时之前完成测试 Thread.sleep(500) } @Test(timeout = 3000) def testMethod2(): Unit = { // 超时之前未完成测试,将会抛出异常 Thread.sleep(5000) } } ``` 在上面的示例,`@Rule`注解用于指定全局的超时时间。在`testMethod`方法,`@Test`注解用于指定该方法的超时时间为1秒,因此在500毫秒内完成测试。而在`testMethod2`方法,`@Test`注解用于指定该方法的超时时间为3秒,但是在5000毫秒后才完成测试,因此该测试将会抛出异常。 如果测试方法抛出了异常,JUnit会将其视为失败。在Scala,你可以使用`@Test`注解的`expected`属性来指定期望抛出的异常类型。例如,如果你期望测试方法抛出`java.lang.Exception`异常,你可以这样写: ```scala @Test(timeout = 1000, expected = classOf[Exception]) def testMethod(): Unit = { // 在超时之前没有完成测试,抛出异常 Thread.sleep(2000) } ``` 在这个示例,`testMethod`方法的超时时间为1秒,但是在2秒后才完成测试,因此会抛出`java.lang.Exception`异常。通过设置`expected`属性,我们告诉JUnit期望这个测试方法会抛出`java.lang.Exception`异常,这样即使测试方法抛出了异常,JUnit也不会将其视为失败。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值