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

来源:4-3 关于自定义注解的代码演示说明

会飞的小飞象

2017-12-19 15:51

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

写回答 关注

3回答

  • qq_啊啊啊洪湖水我的泪_0
    2018-02-09 14:20:08

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

    具体可看

    http://img2.mukewang.com/5a7d139d00013fcf08730387.jpg


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

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

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

    举个例子, Spring的autowired注解

    http://img4.mukewang.com/5a7d17d10001485d09710248.jpg

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

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

    http://img1.mukewang.com/5a7d3c91000113d409560390.jpg

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

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

    所以,总结一下:

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

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


        over


    潇湘魅

    又仔细去看了下文档,懂了 3Q

    2018-09-21 06:17:52

    共 5 条回复 >

  • 会飞的小飞象
    2017-12-21 09:08:15

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


  • lanrong1995
    2017-12-20 16:27:36

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

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


全面解析Java注解

注解Java中的常用技能,通过实战演示注解在实际项目中的应用

126934 学习 · 102 问题

查看课程

相似问题