第17篇-JAVA Annotation 注解

第17篇-JAVA Annotation 注解

  • 每篇一句 :真的努力后你会发现自己要比想象的优秀很多
  • 初学心得: 怀着一颗奋斗不息的心,一切困苦艰辛自当迎刃而解
  • (笔者:JEEP/711)[JAVA笔记 | 时间:2017-05-17| JAVA Annotation注解 ]

1.什么是注解(Annotation)

Annotation 其实就是代码里的特殊标记, 它用于替代配置文件,也就是说,传统方式通过配置文件告诉类如何运行,有了注解技术后,开发人员可以通过注解告诉类如何运行。在Java技术里注解的典型应用是:可以通过反射技术去得到类里面的注解,以决定怎么去运行类

  • Annotation(注解)就是Java提供了一种元程序中的元素关联任何信息和着任何元数据(metadata)的途径和方法
  • Annotion(注解)是一个接口,程序可以通过反射来获取指定程序元素的Annotion对象,然后通过Annotion对象来获取注解里面的元数据
  • Annotation(注解)是JDK5.0及以后版本引入的。它可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。从某些方面看,annotation就像修饰符一样被使用,并应用于包、类 型、构造方法、方法、成员变量、参数、本地变量的声明中

2.基本Annotation

[email protected]: 限定重写父类方法, 该注解只能用于方法
[email protected]: 用于表示某个程序元素(类, 方法等)已过时
[email protected]: 抑制编译器警告

3.自定义Annotation

  • 使用@interface定义Annotation
  • 使用Annotation修饰程序中的类、方法、变量、接口等定义,通常我们会把Annotation放在所有修饰符之前
  • 定义带成员变量的Annotation
  • 为Annotation的成员变量指定初始值

4.提取Annotation信息

  • Annotation接口来代表程序元素前面的注释,该接口是所有Annotation类型的父接口
  • AnnotatedElement接口代表程序中可以接受注释的程序元素
  • 调用AnnotatedElement对象的如下三个方法来访问Annotation信息:
  • getAnnotation(Class annotationClass):返回该程序元素上存在的、指定类型的注释,如果该类型的注释不存在,则返回null
  • Annotation[] getAnnotations():返回该程序元素上存在的所有注释
  • boolean isAnnotationPresent(Class<? extends Annotation> annotationClass):判断该程序元素上是否包含指定类型的注释,存在则返回true,否则返回false

5.Annotation 注解实例

自定义Annotation

1.import java.lang.annotation.Documented;  
2.import java.lang.annotation.ElementType;  
3.import java.lang.annotation.Retention;  
4.import java.lang.annotation.RetentionPolicy;  
5.import java.lang.annotation.Target;  
6./** 
7. * 定义一个注解 
8. */  
[email protected](ElementType.METHOD) // 这是一个对方法的注解,还可以是包、类、变量等很多东西  
[email protected](RetentionPolicy.RUNTIME) // 保留时间,一般注解就是为了框架开发时代替配置文件使用,JVM运行时用反射取参数处理,所以一般都为RUNTIME类型  
[email protected] // 用于描述其它类型的annotation应该被作为被标注的程序成员的公共API,因此可以被例如javadoc此类的工具文档化  
12.public @interface OneAnnotation {  
13.    // 定义注解的参数,类型可以为基本类型以及String、Class、enum、数组等,default为默认值  
14.    String parameter1() default "";  
15.    int parameter2() default -1;  
16.}

使用注解

1./** 
2. * 一个用到了自定义的注解的类 
3. */  
4.public class OClass {  
5.    @OneAnnotation(parameter1="YES", parameter2=10)  
6.    public void oneMethod () {  
7.    }  
8.}

获取注解参数

1.import java.lang.reflect.Method;  
2.public class TestDemo {  
3.    public static void main(String[] args) throws Exception {  
4.        // 提取到被注解的方法Method,这里用到了反射的知识  
5.        Method method = Class.forName("OneClass").getDeclaredMethod("oneMethod");  
6.        // 从Method方法中通过方法getAnnotation获得我们设置的注解  
7.        OneAnnotation oneAnnotation = method.getAnnotation(OneAnnotation.class);  
8.        // 得到注解的俩参数  
9.        System.out.println(oneAnnotation.parameter1());  
10.        System.out.println(oneAnnotation.parameter2());  
11.    }  
12.}

初学(JAVA Annotation注解 高级阶段) 难点: ★★★★★

希望每一篇文章都能够对读者们提供帮助与提升,这乃是每一位笔者的初衷


感谢您的阅读 欢迎您的留言与建议

时间: 2024-08-02 23:10:04

第17篇-JAVA Annotation 注解的相关文章

java Annotation 注解的使用

源码地址:https://github.com/yylxy/JavaAnnotationTest.git java Annotation 注解的使用 ,代码中有详细的注释.是用AndroidStudio写的 /** * 说明:注解创建类 * 作者: 杨阳; 创建于: 2017-06-02 16:10 */@Retention(RetentionPolicy.RUNTIME)//定义注释的生命周期@Target({ElementType.METHOD, ElementType.TYPE})//注释

自己写的基于java Annotation(注解)的数据校验框架

JavaEE6中提供了基于java Annotation(注解)的Bean校验框架,Hibernate也有类似的基于Annotation的数据校验功能,我在工作中,产品也经常需要使 用数据校验,为了方便和重用,自己写了一个简单的基于Annotation的校验框架.有兴趣的可以扩展. 框架说明: AnnotationValidable接口:所有需要使用该校验框架的类都要实现它,该类中没有任何方法需要实现,仅仅是一个表明那些类需要使用该校验框架的标识. GetFiledValue类:是一个工具类,对

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

Java Annotation注解

参考:Java官方文档http://docs.oracle.com/javase/specs/jls/se7/html/jls-9.html#jls-9.6 注解类型: 是一种特殊类型的interface,区别在于注解声明是 @interface 特点: 1.java的注解不可显式声明父类(实际上他们都继承了Annotation类,但是你在声明时无法使用extends 关键字),也无法被泛化. 2.方法: a) 每个方法都定义了该注解中的一个元素(Each method declaration

JAVA - Annotation 注解 入门

Java注解提供了关于代码的一些信息,但并不直接作用于它所注解的代码内容.在这个教程当中,我们将学习Java的注解,如何定制注解,注解的使用以及如何通过反射解析注解. Java1.5引入了注解,当前许多java框架中大量使用注解,如Hibernate.Jersey.Spring.注解作为程序的元数据嵌入到程序当中.注解可以被一些解析工具或者是编译工具进行解析.我们也可以声明注解在编译过程或执行时产生作用. 在使用注解之前,程序源数据只是通过java注释和javadoc,但是注解提供的功能要远远超

Java Annotation注解语法

JAVA从J2SE5开始提供名为annotation(注释,标注)的功能.Java的annotation,可以附加在package, class, method, field等上面,相当于给它们添加了额外的辅助信息.附加在package, class, method, field等上的Annotation,如果没有外部解析工具等对其加以解析和处理的情况,本身不会对Java的源代码或class等产生任何影响,也不会对它们的执行产生任何影响. 但借助外部工具,比如javac,EJB容器等,可以对附加

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

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

深入理解Java:注解(Annotation)自己定义注解入门

深入理解Java:注解(Annotation)自己定义注解入门 要深入学习注解.我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前.我们就必须要了解Java为我们提供的元注解和相关定义注解的语法. 元注解: 元注解的作用就是负责注解其它注解. Java5.0定义了4个标准的meta-annotation类型.它们被用来提供对其它 annotation类型作说明.Java5.0定义的元注解: [email protected], [email protected], [email pro

Java Annotation 及几个常用开源项目注解原理简析

PDF 版: Java Annotation.pdf, PPT 版:Java Annotation.pptx, Keynote 版:Java Annotation.key 一.Annotation 示例 Override Annotation Java 1 2 3 @Override public void onCreate(Bundle savedInstanceState); Retrofit Annotation Java 1 2 3 @GET("/users/{username}&quo