为了账号安全,请及时绑定邮箱和手机立即绑定

自定义注解中的成员变量为什么后面要加括号?

自定义注解中的成员变量为什么后面要加括号?

正在回答

3 回答

一楼这位仁兄有的地方说的有点问题:任何注解本身都是接口 ,只不过是隐式继承了Annotation这个接口而已

具体可看

http://img1.sycdn.imooc.com//5a7d139d00013fcf08730387.jpg


然后我们发现: Annotation 是jdk1.5 新增的特性,然而接口定义方法体是jdk1.8才有的特性,而且必须显式定义为default 修饰的普通方法 或者 静态方法。

所以,无论任何注解都是接口,

任何接口在jdk1.8前都不允许存在方法体

举个例子, Spring的autowired注解

http://img1.sycdn.imooc.com//5a7d17d10001485d09710248.jpg

我们一路跟下去就会看到这个注解的处理方法

org\springframework\beans\factory\annotation\QualifierAnnotationAutowireCandidateResolver.java

http://img1.sycdn.imooc.com//5a7d3c91000113d409560390.jpg

看到泛型<A extends Annotation>也就侧面证明了注解确实是接口;

然后我们再看一下他的调用,也确实是方法的调用方式;

所以,总结一下:

    既然我们可以认为接口是一种非常特殊的抽象类,只不过是不允许存在方法体而已(jdk1.8之前)

    那么我们为什么不把注解认为一种特殊的接口呢,只不过方法定义之后必须默认返回参数呢


    over


2 回复 有任何疑惑可以回复我~
#1

qq_啊啊啊洪湖水我的泪_0

说错了一点: 那么我们为什么不把注解认为一种特殊的接口呢,只不过方法定义之后可以默认返回参数呢
2018-02-13 回复 有任何疑惑可以回复我~
#2

qq_与赠_03193390 回复 qq_啊啊啊洪湖水我的泪_0

大哥,你对一个小白扯这么多有用吗?是不是接口不是那么重要吧,直接告诉他这就是自定义注解的规范不就行了,何必这么纠结呢?
2018-04-01 回复 有任何疑惑可以回复我~
#3

潇湘魅

来看这个视频,就是为了找这个答案!没想到竟然有如此优秀的回答!非常感谢
2018-09-21 回复 有任何疑惑可以回复我~
#4

潇湘魅

虽然我完全不理解你在说什么
2018-09-21 回复 有任何疑惑可以回复我~
#5

潇湘魅

又仔细去看了下文档,懂了 3Q
2018-09-21 回复 有任何疑惑可以回复我~
查看2条回复

是不是说只要是自定义的注解,成员都是带括号的,不是成员变量吗?还是成员方法??


0 回复 有任何疑惑可以回复我~

自定义注解annotation的类型使用关键字@interface而不是interface。它继承了java.lang.annotition.Annotition接口,并非申明了一个interface。同理也不是一个普通类。

Annotation类型、方法定义是独特的、受限制的。Annotation类型的方法必须申明为无参数、无异常抛出的。这些方法定义了Annotation的成员:方法名称为了成员名,而方法返回值称为了成员的类型。


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

自定义注解中的成员变量为什么后面要加括号?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信