Clients and Solutions

新闻排行

JAVA中的注解是如何工作的

2019-10-28 14:54

  从J2SE 5.0时代开始,注解一直是Java的重要组成部分。 在我们的应用程序代码中的某些地方,我们经常看到过类似@Override 和的注释 @Deprecated。注解有什么含义,为什么引入的注解,它们是如何工作的工作方式,如何编写自定义注释,这些就是我们今天要讨论的。

  用一个词来解释注解就是元数据。元数据就是关于数据的数据。因此,注解就是代码的元数据。即使我们不写注解,我们的程序代码也可以正常工作。那么我们写注解的目的是什么?

  比如@Override注解是告诉编译器此方法是重写的方法,如果父类中不存在任何这样的方法,则编译器会抛出异常。现在,如果我犯了一个书写错误,我重写的方法名写错了,如果我没有加上注解,那么我的代码将成功编译并执行,但是却不是我想要的结果。如果我加上了注解,那么编译器就会提示我父类不存在复写的方法。

  从java源码到class字节码是由编译器完成的,编译器会对java源码进行解析并生成class文件,而注解也是在编译时由编译器进行处理,编译器会对注解符号处理并附加到class结构中,根据jvm规范,class文件结构是严格有序的格式,唯一可以附加信息到class结构中的方式就是保存到class结构的attributes属性中。我们知道对于类、字段、方法,在class结构中都有自己特定的表结构,而且各自都有自己的属性,而对于注解,作用的范围也可以不同,可以作用在类上,也可以作用在字段或方法上,这时编译器会对应将注解信息存放到类、字段、方法自己的属性上。

  Java注解实现机制的整个过程如上面所示,它的实现需要编译器和JVM一起配合。

  这就是一个注解的定义,定义好之后,我们只要在代码前使用@Override就可以使用注解了。

  当我们谈论诸如的标准注解的时候, JVM是使用者,它在字节码级别工作。现在,这是应用程序开发人员无法控制并且不能用于自定义注释的功能。因此,我们需要自己给消费者写注释。

  J2SE 5.0在g.annotation包中提供了四个注解,这些注解仅在编写注解时候使用:

  注解功能非常强大,Spring和Hibernate之类的框架将注解广泛用于日志记录和验证。注解可以在使用标记接口的地方使用。标记接口用于完整的类,但是您也可以定义在单个方法上使用的注解,例如,某个方法是否作为服务方法公开。

  在Servlet规范3.0中,引入了许多注解,尤其是与Servlet安全性相关的注解。让我们看看一些:小鱼儿论坛马会开六合生宵对应号码

Technical Support

网站统计

香港数码挂牌| 状元红顶尖高手论坛| 雷锋预测九肖天誉高手榜| 跑狗玄机图高手解论坛| 香港挂牌白小姐玄机图| 跑狗玄机论坛彩图| 心水论坛高手资料大全| 香港马经内部正版来钱料| 四柱预测ab彩图| 香港马会刘伯温网站|