黑猴子的家:Scala 针对 Java 的注解

Scala 类库提供了一组用于与Java互操作的注解。我们将在下面介绍这些注解

1、Java修饰符

Java修饰符:对于那些不是很常用的Java特性,Scala使用注解而不是修饰符关键字。

 // JVM中将成为volatile的字段
@volatile var done = false 
// 在JVM中将成为transient字段,该字段不会被序列化。
@transient var recentLookups = new HashMap[String, String]  
@strictfp def calculate(x: Double) = ...
@native def win32RegKeys(root: Int, path: String): Array[String]
2、标记接口

标记接口:Scala用注解@cloneable和@remote 而不是 Cloneable和Java.rmi.Remote“标记接口”来标记可被克隆的对象和远程的对象

@cloneable class Employee
3、受检异常

受检异常:和Scala不同,Java编译器会跟踪受检异常。如果你从Java代码中调用Scala的方法,其签名应包含那些可能被抛出的受检异常。用@throws注解来生成正确的签名。

class Book {
@throws (classOf[IOException]) def read(filename: String) { ... }
...
}
Java版本的方法签名:
void read(String fileName) throws IOException
// 如果没有@throws注解,Java代码将不能捕获该异常
try {//Java代码
book.read("war-and-peace.txt");
} catch (IOException ex) {
...
}

即:Java编译期需要在编译时就知道read方法可以抛IOException异常,否则Java会拒绝捕获该异常。

Scala
class A{
  def play() = {
    throw  new IOExcetion()
  }
}

Java
class B{
  public static void main(String[] args){
     A.play()
  }
}

在Scala中抛出异常,在Java中调用这个方法,因为是Scala语法,Java检测不到抛出了异常,所以需要添加异常注解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值