一、原因
翻译下:这个@Xxxx注解不允许放在此位置。有可能你的这个注解只能用来注解方法的参数,它应该放在方法的参数前面,你却把它放在了方法的上面。
二、判断注解放置的正确位置
1、查看注解定义的源码
myeclipse: 按住alt键,接着把鼠标放在注解上,最后点击。其他编辑工具查看源码可网上查阅资料
通过@Target(ElementType.PARAMETER) 可以确定@ResponseBody这个注解,只能用来注解方法的参数。
2,参照表格
@Target注解为元注解,是用来在定义其他注解时指明所定义注解适用的场合,即可以用来注解方法,类,或方法的参数。
ElementType是枚举类型,其每一个元素表识了一种适用场合。如下图枚举类型的各个值,及其适用场合:
元素类型 | 注解适用场合 |
---|---|
TYPE | 类(包括enum)和接口 |
METHOD | 方法 |
PARAMETER | 方法或构造器参数 |
FIELD | 成员域(即成员变量) |
CONSTRUCTOR | 构造器 |
LOCAL_VARIABLE | 局部变量 |
PACKAGE | 包 |
ANNOTATION_TYPE | 注解类型声明 |
当不确定注解放在那里时,查看注解的Target,看它的元素类型,然后对照此表就可知道。现在我们可以去看一下我们熟悉的@Override注解,验证下是否是如此,去吧,骚年!