登陆

极彩登陆平台手机版-JAVA中的注解是怎么作业的

admin 2020-02-14 162人围观 ,发现0个评论

从J2SE 5.0年代开端,注解一直是Java的重要组成部分。 在咱们的运用程序代码中的某些当地,咱们常常看到过相似@Override 和的注释 @Deprecated。注解有什么意义,为什么引进的注解,它们是怎么作业的作业办法,怎么编写自界说注释,这些便是咱们今日要评论的。

什么是注解?

用一个词来解说注解便是元数据。元数据便是关于数据的数据。因而,注解便是代码的元数据。即便咱们不写注解,咱们的程序代码也能够正常作业。那么咱们写注解的意图是什么?

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

注解的完结原理

从java源码到class字节码是由编译器完结的,编译器会对java源码进行解析并生成class文件,而注解也是在编译时由编译器进行处理,编译器会对注解符号处理并附加到class结构中,依据jvm标准,class极彩登陆平台手机版-JAVA中的注解是怎么作业的文件结构是严极彩登陆平台手机版-JAVA中的注解是怎么作业的厉有序的格局,仅有能够附加信息到class结构中的办法便是保存到class结构的attributes特点中。咱们知道关于类、字段、办法,在class结构中都有自己特定的表结构,而且各自都有自己的特点,而关于注解,效果的规模也能够不同,能够效果在类上,也能够效果在字段或办法上,这时编译器会对应将注解信息存放到类、字段、办法自己的特点上极彩登陆平台手机版-JAVA中的注解是怎么作业的。

注解的实质便是一个承继Annotation接口的接口,当咱们经过AnnotationTest.class.getAnnotation(Test.class)调用时,JDK会经过动态署理生成一个完结了Test接口的目标,并把将RuntimeVisibleAnnotations特点值设置进此目标中,此目标即为Test注解目标,经过它的value()办法就能够获取到注解值。

Java注解完结机制的整个进程如上面所示,它的完结需求编译器和JVM一同合作。

怎么写注解

编写注解十分简略。您能够将注解界说与接口界说进行比较。

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}

这便是一个注解的界说,界说好之后,咱们只要在代码前运用@Override就能够运用注解了。

当咱们议论比如的标准注解的时分, JVM是运用者,它在字节码等级作业。现在,这是运用程序开发人员无法控制而且不能用于自界说注释的功用。因而,咱们需求自己给顾客写注释。

J2SE 5.0在java.lang.annotation包中供给了四个注解,这些注解仅在编写注解时分运用:

@Documented –是否在Javadocs中增加注释

@Retention –需求注释时,界说注释应保存多长时间

@Target? –放置注释的方位

@Inherited –子类是否取得注释。

自界说注解

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@interface Todo {
public enum Priority {LOW, MEDIUM, HIGH}
public enum Status {STARTED, NOT_STARTED}
String author() default "Yash";
Priority priority() default Priority.LOW;
Status status() default Status.NOT_STARTED;
}

以下是怎么运极彩登陆平台手机版-JAVA中的注解是怎么作业的用上述的注解:

@Todo(priority = Todo.Priority.MEDIUM, author = "Yashwant", status = Todo.Status.STARTED)
public void incompleteMethod1() {
//一些没有完结的办法
}

注解事例


注解功用十分强壮,Spring和Hibernate之类的结构将注解广泛用于日志记载和验证。注解能够在运用符号接口的当地运用。符号接口用于完好的类,可是极彩登陆平台手机版-JAVA中的注解是怎么作业的您也能够界说在单个办法上运用的注解,例如,某个办法是否作为服务办法揭露。

在Servlet标准3.0中,引进了许多注解,尤其是与Servlet安全性相关的注解。让咱们看看一些:

MultipartConfig –此注释用于指示声明晰它的Servlet期望运用multipart / form-data MIME类型进行恳求。

ServletSecurity –在Servlet完结类上声明此注释,以对HTTP协议恳求强制施行安全性束缚。

WebFilter –用于声明Servlet过滤器的注释。

WebInitParam –用于在WebFilter 或 WebServlet 注释内的Servlet或过滤器上声明初始化参数的 注释。

WebListener — 在给定的Web运桃子用程序上下文中用于声明各种事情的侦听器的注释。

WebServlet –此注释用于声明Servlet的装备。

请关注微信公众号
微信二维码
不容错过
Powered By Z-BlogPHP