什么可以被注解

  1. 可以为类,方法,字段局部变量,参数,表达式,类型参数以及各种类型定义添加注解
  1. @Entity class Student
  2. @Test def play() {}
  3. @BeanProperty var username = _
  4. def doSomething(@NotNull message: String) {}
  5. @BeanProperty @Id var username = _
  1. 构造器注解,需要在主构造器之前,类名之后,且需要加括号,如果注解有参数,则写在注解括号里
  1. class Student @Inject() (var username: String, var password: String)
  1. 为表达式添加注解,在表达式后添加冒号
  1. (map1.get(key): @unchecked) match {...}
  1. 泛型添加注解
  1. class Student[@specialized T]
  1. 实际类型添加注解
  1. String @cps[Unit]

注解参数

java注解可以带有名参数

  1. @Test(timeout = 100, expected = classOf[IOException])
  2. //如果参数名为value,则该名称可以直接略去
  3. @Named("creds") var credentials: Credentials = _ //value参数的值为"creds"
  4. //注解不带参数,园括号可以省去
  5. @Entity class Credentials

java注解的参数类型只能是:
数值型的字面量
字符串
类字面量
java枚举
其他注解