在Java 7中使用访问修饰符之后放置注释是否合法? 还是Java 8?
这是通常的代码:
@Autowire private Service service;
但是使用Java 7,这也可以(并且更短):
private @Autowire Service service;
这在Java 8中是否合法(具有相同的语义)? 这是不好的编码练习吗?
根据文件
在Java 7中:
注释可以应用于声明:类,字段,方法和其他程序元素的声明。 当在声明中使用时,每个注释通常按照惯例出现在它自己的行上。
从Java SE 8发行版开始,注释也可以应用于类型的使用。 :
类实例创建表达式:
new @Interned MyObject();
输入:
myString = (@NonNull String) str;
实现条款:
class UnmodifiableList implements @Readonly List<@Readonly T> { ... }
抛出的exception声明:
void monitorTemperature() throws @Critical TemperatureException { ... }
根据官方Java 7语法,这是合法的:
Modifier: Annotation public protected private static abstract final native synchronized transient volatile strictfp ClassOrInterfaceDeclaration: {Modifier} (ClassDeclaration | InterfaceDeclaration) ...
Java 8的语法似乎也允许自由混合修饰符:
MethodDeclaration: {MethodModifier} MethodHeader MethodBody MethodModifier: Annotation public protected private abstract static final synchronized native strictfp