zoukankan      html  css  js  c++  java
  • 快学Scala(15)--注解

    什么是注解

    注解是那些你插入到代码中以便有工具可以对它们进行处理的标签。工具可以在代码级别处理,也可以处理被编译器加入了注解信息的类文件。

    什么可以被注解

    类、方法、字段、局部变量和参数

    针对Java特性的注解

    1. Java修饰符

    @volatile  =>  volatile
    @transient  =>  transient  //瞬态,不会被序列化
    @strictfp  =>  strictfp   //使用IEEE的double值来进行浮点运算。计算结果更慢,但代码可移植性更高
    @native  =>  native      //标记那些在C或C++代码中实现的方法

    2. 标记接口

    @cloneable  =>  Cloneable
    @remote  =>  java.rmi.Remote
    

    3. 受检异常

    class Book {
      @throws(classOf[IOException]) def read(filename: String) { ... }  // void read(String filename) throws IOException
    }
    

    4. 变长参数

    @varargs def process(args: String*)
    

    5. JavaBeans

    @BeanProperty,编译器将生成JavaBeans风格的getter和setter方法。

    用于优化的注解

    1. 尾递归:@tailrec

    2. 跳转表生成与内联:@switch

    (n: @switch) match {
      case 0 => "Zero"
      case 1 => "One"
      case _ => "?"
    }

    3. 可省略方法:@elidable

    4. 基本类型的特殊化

    def allDifferent[T](x: T, y: T, z: T) = ...  //不高效,装箱拆箱
    def allDifferent(x: Int, y: Int, z: Int)  //优化,但要写七个方法
    def allDifferent[@specialized T](x: T, y: T, z: T)  //编译器自动生成七个方法
    def allDifferent[@specialized(Long, Double) T](x: T, y: T, z: T)  //特殊化限定在所有可选类型的子集

      可指定类型: Unit, Boolean, Byte, Short, Char, Int, Long, Float, Double

    用于错误和警告的注解

    @deprecated

    @deprecatedName

    @implicitNotFound 在某个隐式参数不存在的时候生成有意义的错误提示

    @unchecked 用于在匹配不完整时取消警告消息

    @uncheckedVariance取消与型变相关的错误提示

  • 相关阅读:
    数列(codevs 1141)
    Circle(codevs 3134)
    Jam的计数法(codevs 1140)
    水果姐逛水果街Ⅰ(codevs 3304)
    引水入城(codevs 1066)
    Vigenère 密码(luogu 1079)
    铺地毯(luogu 1003)
    SSO之CAS基础及应用视频教程(1)
    Spark高速入门指南(Quick Start Spark)
    python爬虫CSDN文章抓取
  • 原文地址:https://www.cnblogs.com/PaulingZhou/p/6677203.html
Copyright © 2011-2022 走看看