什么可以被注解
- 可以为类,方法,字段局部变量,参数,表达式,类型参数以及各种类型定义添加注解
@Entity class Student
@Test def play() {}
@BeanProperty var username = _
def doSomething(@NotNull message: String) {}
@BeanProperty @Id var username = _
- 构造器注解,需要在主构造器之前,类名之后,且需要加括号,如果注解有参数,则写在注解括号里
class Student @Inject() (var username: String, var password: String)
- 为表达式添加注解,在表达式后添加冒号
(map1.get(key): @unchecked) match {...}
- 泛型添加注解
class Student[@specialized T]
- 实际类型添加注解
String @cps[Unit]
注解参数
java注解可以带有名参数
@Test(timeout = 100, expected = classOf[IOException])
//如果参数名为value,则该名称可以直接略去
@Named("creds") var credentials: Credentials = _ //value参数的值为"creds"
//注解不带参数,园括号可以省去
@Entity class Credentials
java注解的参数类型只能是:
数值型的字面量
字符串
类字面量
java枚举
其他注解