自定义注解中的成员变量为什么后面要加括号?
自定义注解中的成员变量为什么后面要加括号?
自定义注解中的成员变量为什么后面要加括号?
2017-12-19
一楼这位仁兄有的地方说的有点问题:任何注解本身都是接口 ,只不过是隐式继承了Annotation这个接口而已
具体可看
然后我们发现: Annotation 是jdk1.5 新增的特性,然而接口定义方法体是jdk1.8才有的特性,而且必须显式定义为default 修饰的普通方法 或者 静态方法。
所以,无论任何注解都是接口,
任何接口在jdk1.8前都不允许存在方法体
举个例子, Spring的autowired注解
我们一路跟下去就会看到这个注解的处理方法
org\springframework\beans\factory\annotation\QualifierAnnotationAutowireCandidateResolver.java
看到泛型<A extends Annotation>也就侧面证明了注解确实是接口;
然后我们再看一下他的调用,也确实是方法的调用方式;
所以,总结一下:
既然我们可以认为接口是一种非常特殊的抽象类,只不过是不允许存在方法体而已(jdk1.8之前)
那么我们为什么不把注解认为一种特殊的接口呢,只不过方法定义之后必须默认返回参数呢
over
举报