Annotation注解(有源代码)

注解(annotation)概述:

·从JDK5.0 开始,java增加了对元数据(MetaData)的支持,也就是Annotation(注解)

·Annotation其实就是代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。通过使用Annotation,程序员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充信息。

·Annotation可以像修饰符一样被使用,可用于修饰包,类,构造器,方法,成员变量,参数,局部变量的声明,这些信息被保存在Annotation的“name=value”对中。

·Annotation能被用来为程序元素(类,方法,成员变量等)设置元数据

基本的Annotation:

·使用Annotation时要在其前面增加@符号,并把该Annotation当成一个修饰符使用。用于修饰它支持的程序元素

·三个基本的Annotation:

[email protected] Override:限定重写父类方法,该注释只能用于方法

[email protected] Deprecated:用于表示某个程序元素(类,方法等)已过时

[email protected] SuppressWarnings:抑制编译器警告

自定义Annotation:

·定义新的Annotation类型使用@interface关键字

·Annotation的成员变量在Annotation定义中以无参数方法的形式来声明。其方法名和返回值定义了该成员的名字和类型。

·可以在定义Annotation的成员变量时为其制定初始值,指定成员变量的初始值可使用default关键字

例:

public @interface MyAnnotation{

    String name() default "liang"

}

·没有成员定义的Annotation称为标记;包含成员变量的Annotation称为元数据Annotation

提取Annotation信息:

·JDK5.0 在java.lang.reflect 包下新增了AnnotationElement接口,该接口代表程序中可以接受注解的程序元素

·当一个Annotation类型被定义为运行时可见,当class文件被载入时保存在class文件中的Annotation才会被虚拟机读取

·程序可以调用AnnotationElement对象的如下方法来访问Annotation信息

JDK的元Annotation:

·JDK的元Annotation用于修饰其他Annotation定义

·JDK5.0 提供了专门在注解上的注解类型,分别是:

1.Retention

2.Target

3.Documented

4.Inherited

·@Retention:只用用于修饰一个Annotation定义,用于指定该Annotation可以保留多长时间,@Retention包含一个RetentionPolicy类型的成员变量,使用@Retention时必须为该value成员变量指定值:

1.RetentionPolicy.SOURCE:编译器直接直接丢弃这种策略的注释

2.RetentionPolicy.CLASS(默认):编译器会把注释记录在class文件中。当运行java程序时,JVM不会保留注解。这是 默认值

3.RetentionPolicy.RUNTIME:编译器将把注释记录在class文件中。当运行java程序时,JVM会保留注释。程序可以通过反射获取该注释。

·@Target:用于修饰Annotation定义,用于指定被修饰的Annotation能用于哪些程序元素。@Target也包含了一个名为value的成员变量。

@Documented:用于指定被该元Annotation修饰的Annotation类江北javadoc工具提取成文档。

1.定义为Documented的注解必须设置Retention值为RUNTIME。

·@Inherited:被它修饰的Annotation将具有继承性。如果某个类使用了被@Inherited修饰的Annotation,则其子类将自动具有该注解(实际应用中,使用较少)。

 1 package com.demo;
 2 /*
 3  *
 4  * 如何自定义一个注解
 5  * 元注解
 6  */
 7 public class TestAnnotation {
 8     public static void main(String[] args) {
 9         Person p = new  Student();
10         p.walk();
11     }
12 }
13
14 class Student extends Person{
15
16     @Override
17     public void walk() {
18         System.out.println("学生走路");
19     }
20     @Override
21     public void eat() {
22         super.eat();
23     }
24 }
25 class Person{
26     @MyAnnotation(value="liang")
27     String name;
28     int age;
29
30     public Person() {
31     }
32     public Person(String name, int age) {
33         super();
34         this.name = name;
35         this.age = age;
36     }
37     public void walk(){
38         System.out.println("走路");
39     }
40     @Deprecated
41     public void eat(){
42         System.out.println("吃东西 ");
43     }
44     @Override
45     public String toString() {
46         return super.toString();
47     }
48
49 }
 1 package com.demo;
 2
 3 import java.lang.annotation.Retention;
 4 import java.lang.annotation.RetentionPolicy;
 5 import java.lang.annotation.Target;
 6 import java.lang.reflect.Field;
 7 import java.lang.annotation.ElementType;
 8 //自定义的注解
 9 @Target({ElementType.FIELD})
10 @Retention(RetentionPolicy.RUNTIME)
11 public @interface MyAnnotation {
12         String value() default "Hello";
13 }
时间: 2024-10-07 11:50:54

Annotation注解(有源代码)的相关文章

第17篇-JAVA Annotation 注解

第17篇-JAVA Annotation 注解 每篇一句 :真的努力后你会发现自己要比想象的优秀很多 初学心得: 怀着一颗奋斗不息的心,一切困苦艰辛自当迎刃而解 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-05-17| JAVA Annotation注解 ] 1.什么是注解(Annotation) Annotation 其实就是代码里的特殊标记, 它用于替代配置文件,也就是说,传统方式通过配置文件告诉类如何运行,有了注解技术后,开发人员可以通过注解告诉类如何运行.在Java技术

[Java5新特性]Annotation注解

Annotation概述 Annotation是JDK 5.0以后提供对元数据的支持,可以在编译.加载和运行时被读取,并执行相应的处理.所谓Annotation就是提供了一种为程序元素设置元数据的方法,可用于修饰包.类.构造器.方法.成员变量.参数和局部变量的声明,这些信息被存储在Annotation的"name=value"对中. Annotation能被用来为程序元素(类.方法.成员变量等)设置元数据,比如一段代码的作者或者告诉编译器禁止一些特殊的错误,不会影响代码的执行. 基本A

Java Annotation 注解

java_notation.html div.oembedall-githubrepos { border: 1px solid #DDD; list-style-type: none; margin: 0 0 10px; padding: 8px 10px 0; font: 13.34px/1.4 helvetica, arial, freesans, clean, sans-serif; width: 452px; background-color: #fff } div.oembedall

Android开发学习之路--Annotation注解简化view控件之初体验

一般我们在写android Activity的时候总是会在onCreate方法中加上setContentView方法来加载layout,通过findViewById来实现控件的绑定,每次写这么多代码总觉得很烦躁.近来看了下android中有Annotation来实现这方面的简化,对于java不是很了解,就简单的看了下.上次玩web的时候,springmvc也有很多的注解,不知道怎么实现的,这里其实基本上类似. Annotation注解这里主要还是讲讲怎么使用吧,单纯的原理会把人绕进去的,没办法,

Hibernate中的Annotation注解与XML配置的使用

通过XML配置来实现持久化: 首先我们来建立一个实体类: package com.hibernate.model; public class Student {     private int id;     private String name;     private int age;          public int getId() {         return id;     }     public void setId(int id) {         this.id 

struts 文件下载 annotation 注解版

[本文简介] 本文将简单介绍使用 struts2 ,通过零配置和 annotation 实现文件下载功能. [文件夹结构] [web.xml有关struts的配置] <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

Annotation 注解

jdk5开始,java增加了对元数据MetaData的支持,也就是Annotation,是代码里的特殊标记,可以在编译,类加载,运行时被读取,并执行相应的处理.通过注解,开发人员可以在不改变原有逻辑的情况下,在源文件中嵌入补充一些信息.代码分析工具.开发工具.部署工具可以通过这些补充信息进行验证或者进行部署 Annotation提供了一种为程序元素设置元数据的方法,就像修饰符一样,可以用于修饰包,类,构造器,成员变量,方法参数,局部变量的声明,这些信息被存储在Annotation的"name=v

Java反射学习总结五(Annotation(注解)-基础篇)

Annotation(注解)简单介绍: 注解大家印象最深刻的可能就是JUnit做单元測试,和各种框架里的使用了. 本文主要简介一下注解的用法,下篇文章再深入的研究. annotation并不直接影响代码语义.可是它可以被看作类似程序的工具或者类库.它会反过来对正在执行的程序语义有所影响. annotation能够从源文件,class文件或者以在执行时反射的多种方式被读取 java注解系统自带有主要下面几个注解: Override注解表示子类要重写(override)父类的相应方法 Depreca

Android Annotation注解的剖析和使用

都说Annotation的运用非常简单,但真正我们需要下手实现的的时候,有的时候就不知道从哪里下手,为什么我们觉得很简单的东西,但却无法下手呢? 原因只有一个,我们对它的使用非常少,但对于写框架的人来说Annotation却使用的频率非常高.那既然我们平时用的非常少,我写这篇blog就没什么意义了,的确,那我也只当是给大家做个查阅的文档.不过我还是希望大家能通过这篇blog,加强对Annotation的理解,这篇blog省去了Annotation不必要的知识点,就像慕课网所说的只学有用的. 进入