java annotation 是java5之后引入的。主要包括三种标准注解:
@Override:覆盖超类中的方法。
@Deprecated:表示不推荐,可以用来表示一些将要在未来版本被废弃的方法。
@SuppressWarnings:关闭不当的编译器表示信息。
除了三种标准注解外,还有四种元注解。
@Target 表示注解的作用范围。可能的ElementType包括:CONSTRUCTOR(构造器的声明),FIELD(域声明),LOCAL_VARIABLE(局部变量的声明)、METHOD(方法声明)。PAKAGE(包声明)、PARAMETER(参数声明)、TYPE(类、接口、注解或者是Enum的声明)。其中相对来说Method和field更常用。
@Retention: 表示注解保存的级别。可选的RetentionPolicy包括: SOURCE(注解将被编译器丢掉,也就是class文件中不存在),CLASS(注解在class文件中可用,但会被vm丢掉),RUNTIME(VM在运行其也将保留这些注解,可以通过反射读取注解的信息)。
@Documented 将注解包含在javadoc中。
@Inherited 允许子类继承父类的注解。
下面看一个annotation的示例:
Annotation的定义:
package annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface AnnotationDemo {
String check() default "hello world!";
}
Annotation的处理器:
package annotation;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
public class AnnotationDemoInterceptor {
public void checkInterceptor(Class<?>cl){
for(Method m :cl.getDeclaredMethods()){
AnnotationDemo annoDemo = m.getAnnotation(AnnotationDemo.class);
if(annoDemo !=null){
System.out.println("Found AnnotationDemo in "+m.getName()+" :"+annoDemo.check());
}else{
System.out.println("Found nothing in "+m.getName());
}
}
}
}
测试类:
package annotation;
public class AnnotationDemoTest {
public static void main(String[]args){
AnnotationDemoInterceptor adi = new AnnotationDemoInterceptor();
adi.checkInterceptor(AnnotationDemoTest.class);
}
@AnnotationDemo(check = "hello, shuofenglxy")
public static void doSomething(){
System.out.println("This is an annotation example!");
}
@AnnotationDemo()
public static void doHello(){
System.out.println("This is an annotation example!");
}
public static void doOtherthing(){
System.out.println("This is normal method!");
}
}
测试结果:
Found AnnotationDemo in doSomething :hello, shuofenglxy
Found AnnotationDemo in doHello :hello world!
Found nothing in doOtherthing
Found nothing in main
说明:通过这个简单的示例,大概说明了自己书写annotation的过程,在spring,ejb中大量应用了annotation,原理也是大致相同的,无非定义annotation,设置处理器,然后就可以用了。在自己的应用中可以用annotation的方式来做权限管理等等。
分享到:
相关推荐
### Java Annotation 概述与应用 #### 一、Java Annotation 的定义及作用 Java Annotation(注解)是自 Java 5.0 开始引入的一种语言元素,它为开发者提供了在代码中添加元数据的能力。简单来说,注解就像是对代码...
Java Annotation 是 JDK5.0 引入的一种元数据机制,它允许程序员在代码中嵌入额外的信息,这些信息可以被编译器、构建工具或运行时系统用来执行特定的任务。Annotation 提供了一种安全、灵活的方式来描述代码的属性...
Java 注解(Annotation)是Java语言提供的一种元编程机制,它允许程序员在源代码的各个元素(如类、方法、变量等)上添加信息。这些信息可以被编译器或运行时系统用来验证代码、执行特定操作或者提供额外的运行时...
通过上述示例中的JavaAnnotation压缩包,你可能包含了注解的使用示例、源码以及相关的博客文章。源码可以帮助你理解注解的实际应用,而博客文章可能深入解释了注解的工作原理和最佳实践。学习这些材料,将有助于你...
《Java Annotation手册》 在Java编程语言中,注解(Annotation)是一种元数据,它提供了在编译时或运行时处理代码的一种方式。通过注解,开发者可以向编译器或JVM提供有关代码的附加信息,而这些信息通常不直接影响...
Java Annotation,也称为注解,是Java编程语言中的一种元数据机制,用于向编译器、JVM或工具提供有关代码的附加信息。这些信息不直接影响代码的执行,但可以被编译器或运行时环境用来执行特定的操作,如代码分析、...
Java Annotation注解技术是自Java SE 5.0版本引入的一种元编程机制,它允许程序员在源代码的各个层面(如类、方法、变量等)添加元数据,以供编译器、JVM或第三方工具在编译时或运行时进行处理。Annotation简化了...
Java的`javax.annotation.processing.Processor`接口定义了注解处理器的规范。 5. 使用注解 注解可以应用于类、方法、字段、参数、构造函数、包等不同级别。例如: ```java @MyAnnotation("Hello, World!") ...
Java注解(Java Annotation)是Java编程语言中的一个重要特性,它提供了一种元数据的方式,允许程序员在代码中嵌入额外的信息。这些信息可以被编译器、JVM或者特定工具在编译时或运行时读取,用于执行各种验证、生成...
【Java Annotation手册】 Java Annotation是Java编程语言中的一个重要特性,它允许程序员在代码中嵌入元数据,这些元数据不直接影响程序的运行,但可以被编译器、工具或运行时环境用来验证代码、生成文档、实现依赖...
Java Annotation是Java编程语言中的一种特性,用于向编译器、虚拟机或其他工具提供元数据。在《Java Annotation入门》的基础上,这篇手册深入探讨了Annotation的定义、使用和功能。 一、Annotation的本质 ...
【Java Annotation 实例】 Java Annotation 是一种元数据,它允许我们在源代码中嵌入信息,这些信息可以被编译器或运行时环境用于处理代码。Annotation 不是代码本身,但可以影响代码的行为或提供编译时和运行时的...
在《Java Annotation入门》之后的这篇《重难点之JavaAnnotation手册》中,作者深入探讨了Annotation的概念、定义以及其在Java开发中的应用。 一、Annotation是什么? Annotation是一种在代码中添加的特殊注解,用于...
Java Annotation 是一种在 J2SE 5.0 版本中引入的重要特性,它遵循JSR-175规范,允许程序员在代码中嵌入元数据。元数据是关于数据的数据,可以用来创建文档、追踪代码依赖关系以及执行编译时检查。在Java中,注释...
如果你想知道java annotation是什么?你可以看看
Java 注解(Annotation)是自 JDK 5.0 版本引入的一种元数据机制,用于向编译器、开发工具和运行时系统提供有关代码的附加信息。它们并不直接影响程序的执行,但可以用于代码分析、编译时验证或者运行时处理。本文将...