005-java的Annotation

一、概述

  Annotation,JDK1.5开始提供

二、基本定义

public @interface HelloWorld {
}

1、使用@Interface定义,名称大写

2、使用@Target修饰能放到那些类属性上,不写是能修饰任何java上

3、元注解RetentionPolicy,表明注解的生命周期:

  1、SOURCE:在原文件中有效,被编译器丢弃。 
  2、CLASS:在class文件有效,可能会被虚拟机忽略。 
  3、RUNTIME:在运行时有效。

4、成员,在注解中定义【不能是类类型,对象类型等,但是Class可以】

public String name();

增加缺省值 

public String name() default "helloworld";

如果只有一个成员并且是value,在使用时可以省略,直接写值。

5、使用

@HelloWorld(name = "nihao1")
public class TestBean {
@HelloWorld(name = "nihao2")
private String name; @Override
@HelloWorld(name = "nihao3")
public String toString() {
     System.out.println("zhixing");
return "TestBean [name=" + this.name + "]";
}
}

三、主要作用

1、针对以上不做任何处理其实没有任何用处

2、解析Annotation,然后处理问题

public class Parser {
public void parse(Object obj, String methodName) {
Method[] ms = obj.getClass().getMethods();
for (Method m : ms) {
if (m.getName().equals(methodName)) {
if (m.isAnnotationPresent(HelloWorld.class)) {
HelloWorld hw = m.getAnnotation(HelloWorld.class);
try {
System.out.println("before...");
m.invoke(obj, null);
System.out.println("after...");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
}

3、Annotation处理的主要方法

005-java的Annotation

4、可以取代xml配置

上一篇:Ubuntu Docker Registry 搭建私有仓库


下一篇:Hdu 4539 【状态DP】.cpp