1. Annotation的声明方式
Annotation类型那个声明于一般的接口声明极为相似,只是其关键字为@interface,其属性必须带有小括号,其实更像定义方法,下面文章以属性称之。
2. 常见的几种annotation
• @Override: 用在方法,说明这个方法打算重写父类中的另一个方法的声明。
• @Deprecated: 用于所有元素,说明该方法或属性等已经过时,不建议使用,编译器会产生警告信息,通常是因为它很危险或存在更好的选择。
• @SuppressWarnings: 取消显示指定的编译器警告。
3.自定义annotation
3.1 @Retention
表示注释类型的注释要保留多久,注解的生命周期,不声明默认为class策略,可选下面三种策略:
1,RetentionPolicy.SOURCE: 这个Annotation类型的信息只会保存在程序源码中,源码如果经过了编译之后,Annotation的数据就会消失,并不会保存在编译好的.class二进制文件中。
2,RetentionPolicy.CLASS: 这个Annotation类型的信息保留在程序源码中,同时也会保存在编译好的.class文件中,在执行的时候并不会加载到JVM中。(默认)
3,RetentionPolicy.RUNTIME: 表示在源码、编译好的.class文件中保存信息,在执行的时候会把这些信息加载到JVM中,这样可以使用反射将其信息获取出来。
3.2 @Target
表示注解类型所使用的程序元素,不声明可以用在任一元素中。
1,ElementType.ANNOTATION_TYPE: 注释类型
2,ElementType.CONSTRUCTOR: 构造方法
3,ElementType.FIELD: 字段(包括枚举常量)
4,ElementType.LOCAL_VARIABLE: 局部变量
5,ElementType.METHOD: 方法
6,ElementType.PACKAGE: 包
7,ElementType.PARAMETER: 参数
8,ElementType.TYPE: 类Class、接口Interface(包括注释类型Annotation)或枚举Enum
3.3 @Documented
表示某一类型的注释将通过javadoc和类似的默认工具进行文档化,文档化时其注释部分将成为注释元素的公共API的一部分。
3.3 @Inheried
表示允许子类继承父类中的注解
4. 案例实现
TestAnnotation.java 自定义Annotation类
Test.java 测试类
package com.anotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 自定义注解类
* @author zhimeng
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface TestAnnotation {
/**
* 为注解添加属性name,默认值为:zhimeng
*/
public String name() default "zhimeng";
public String mail();
}
测试注解
package com.anotation;
import java.lang.reflect.Method;
/**
* @author zhimeng
*/
public class Test {
@TestAnnotation(mail = "")
public void test1(){}
/**
* 调用注解赋值
*/
@TestAnnotation(name="xiaohong", mail = "zhimeng@126.com")
public void test2(){}
public static void main(String[] args) {
Method[] methods = Test.class.getDeclaredMethods();
for (Method method : methods) {
/**
* 检查方法是否有注解
*/
boolean hasAnnotation = method.isAnnotationPresent(TestAnnotation.class);
if(hasAnnotation){
//获取注解
TestAnnotation testAnnotation = method.getAnnotation(TestAnnotation.class);
System.out.println("method:"+method.getName()
+", name:"+testAnnotation.name()
+", mail:"+testAnnotation.mail());
}
}
}
}
输出结果:
method:test1, name:zhimeng, mail:
method:test2, name:xiaohong, mail:zhimeng@126.com
分享到:
相关推荐
Java Annotation注解技术是自Java SE 5.0版本引入的一种元编程机制,它允许程序员在源代码的各个层面(如类、方法、变量等)添加元数据,以供编译器、JVM或第三方工具在编译时或运行时进行处理。Annotation简化了...
Java Annotation,也称为注解,是Java编程语言中的一种元数据机制,用于向编译器、JVM或工具提供有关代码的附加信息。这些信息不直接影响代码的执行,但可以被编译器或运行时环境用来执行特定的操作,如代码分析、...
本篇将深入探讨Java Annotation注解的相关知识点。 1. **注解类型**: Java提供了三种类型的注解:源码级注解、编译器级注解和运行时注解。源码级注解在编译后不保留,只用于源码阶段;编译器级注解会影响编译过程...
Java Annotation,也称为注解,是Java编程语言中的一种元数据机制,自JDK 5.0开始引入。注解提供了在源代码中嵌入元数据的能力,这些元数据可以被编译器、构建工具或者运行时环境用来处理代码。它们在代码中看起来...
Java Annotation(注解)是自 Java 5.0 开始引入的一种语言元素,它为开发者提供了在代码中添加元数据的能力。简单来说,注解就像是对代码进行标记或注释的方式,这些标记可以在编译时或者运行时被读取并执行特定的...
如果你想知道java annotation是什么?你可以看看
Java 1.5 引入了一种新的元编程机制——注解(Annotation),极大地增强了代码的可读性和可维护性。注解是一种在代码中添加元数据的方式,它允许程序员在源代码上添加一些信息,这些信息可以被编译器或运行时环境...
Java Annotation 是 JDK5.0 引入的一种元数据机制,它允许程序员在代码中嵌入额外的信息,这些信息可以被编译器、构建工具或运行时系统用来执行特定的任务。Annotation 提供了一种安全、灵活的方式来描述代码的属性...
Java 注解(Annotation)是Java语言提供的一种元编程机制,它允许程序员在源代码的各个元素(如类、方法、变量等)上添加信息。这些信息可以被编译器或运行时系统用来验证代码、执行特定操作或者提供额外的运行时...
在Java编程语言中,注解(Annotation)是一种元数据,它提供了在编译时或运行时处理代码的一种方式。通过注解,开发者可以向编译器或JVM提供有关代码的附加信息,而这些信息通常不直接影响程序的执行,但可以用于...
Java.Annotation注解.part4
Java的`javax.annotation.processing.Processor`接口定义了注解处理器的规范。 5. 使用注解 注解可以应用于类、方法、字段、参数、构造函数、包等不同级别。例如: ```java @MyAnnotation("Hello, World!") ...
通过上述示例中的JavaAnnotation压缩包,你可能包含了注解的使用示例、源码以及相关的博客文章。源码可以帮助你理解注解的实际应用,而博客文章可能深入解释了注解的工作原理和最佳实践。学习这些材料,将有助于你...
Java.Annotation注解.part3
Java.Annotation注解.part2
Java.Annotation注解.part1
### Java自定义注解Annotation的使用 #### 1. 前言 自从JDK 1.5引入了注解这一特性以来,它已经成为Java开发中的一个重要组成部分。注解最初是为了推动EJB 3.0的普及和发展而设计的,其目的是减少配置文件的使用,...
Java注解(Annotation)是Java语言的一个重要特性,它为元数据提供了强大的支持。元数据是一种描述数据的数据,可以提供有关代码的附加信息,而这些信息并不直接影响代码的执行。在Java中,注解用于向编译器、JVM或...