实际上,我正在经历Java 8中的新事物.有许多新的东西已经到来,即Lambda表达式,Default方法等等.
其中一个功能是重复注释,
"重复注释提供了对同一声明或类型使用多次应用相同注释类型的能力"
在这里,我可以理解我可以多次使用相同的注释.
我正在尝试了解此添加的实际/实际用法.并试图理解为什么他们错过了它直到java 7.
例如,如果您有一些基于角色的安全性,那么您可以编写如下内容:
@Authorize(role="USER")
@Authorize(role="ADMIN")
public void doStuff(){
...codez
}
Run Code Online (Sandbox Code Playgroud)
在以前的Java版本中,要实现相同的目标,您必须执行以下操作:
@Authorize(roles={"USER", "ADMIN"})
public void doStuff(){
...codez
}
Run Code Online (Sandbox Code Playgroud)
要么
@Authorize(role="USER, ADMIN")
public void doStuff(){
..moar codez
}
Run Code Online (Sandbox Code Playgroud)
正如你自己所看到的那样,差异很小,而且@Repeatable注释比一个巨大的突破更具有语法糖.除非你考虑一些更详细的注释,比如一堆Quartz cron表达式,否则好处并不明显.在Java 8之前,您必须执行以下操作:
@Cron(values={"* * * * * 10", "12 * * * * 0", "4 * 5 * 6 * 7"})
public void doCron(){
}
Run Code Online (Sandbox Code Playgroud)
但是在java 8中,每行可以有一个单独的cron,这使得表达式更具可读性.
当您在注释中声明了多个字段时,它会非常有用.例如:
@Repeatable
public @interface Role {
String type;
String[] allowed;
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,将这种注释用于多个角色要容易得多:
@Role(type="readonly", allowed={"view"})
@Role(type="admin", allowed={"view,add,update,delete"})
public boolean checkAllowed() {
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
821 次 |
| 最近记录: |